Comunidad de diseño web y desarrollo en internet online

PHP no me enlaza a los ficheros con nombre largo

Citar            
MensajeEscrito el 12 Ene 2011 02:10 pm
Hola, tengo un código que me lista con enlaces los archivos de una carpeta, así cuando le doy a un enlace se descarga el archivo que enlaza. Pero tengo por ejemplo una canción que se llame 02 -Falsalarma atención.mp3 y cuando le doy al enlace me da error como que el archivo no ha sido encontrado. En cambio renombro esa canción a 02.mp3 y al darle al enlace si se me descarga, que puede estar pasando?, yo necesito que me deje descargar todos los ficheros por muy grande que sea el nombre que tenga o que tengan - acentos o lo que sea. Pueden ayudarme ?, dejo aquí el código.
CÓDIGO PHP:

Código PHP :

<? 
$dir = "musica/";
$arrayEx = array('doc','pdf','mp3','txt','ppt'); // Carpeta que contiene a los archivos subidos
// etc... extensiones que se quieren leer

$countArry = count($arrayEx); // Contamos la cantidad de extensiones en el array
if(is_dir($dir)) { // Verificamos que se nos pase una carpeta...
   $fp = opendir($dir); // Abrimos la carpeta...
   while(false!==($archivos = readdir($fp))) { // Leemos los archivos de la carpeta...

      for($i=0;$i<$countArry;$i++) {
         if(strpos($archivos,$arrayEx[$i],1)) { // Buscamos los archivos con las extensiones que le pasamos...
            echo "<a href='$dir$archivos' class='Estilo2'>". $archivos ."</a><br />"; // Escribimos los archivos encontrados...
         }
      }
   }
}
closedir($fp);

?>

FIN DE CÓDIGO.
Muchas gracias por la ayuda.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 12 Ene 2011 03:41 pm
¿Sobre qué sistema operativo estás trabajando?. Probablemente el problema no sea el tamaño del nombre del archivo, sino los caracteres especiales, como la "á" en el nombre de archivo en el ejemplo que has dado.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 12 Ene 2011 03:45 pm
el problema parece ser que no esta aceptando la codificacion URL tu servidor recuerda que las urls que hagas tienen que estar codificadas por ejemplo los espacios estan representados po rl simbolo +
haber intenta codificarla

Código PHP :

 echo "<a href='".urlencode($dir$archivos)."' class='Estilo2'>". $archivos ."</a><br />";

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Ene 2011 05:09 pm
Gracias por responderme, pero el script me da error en la línea 13 cuando lo modifico con la linea que me pusiste, osea, me da error en la linea que me pusiste, por que puede ser ?

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 12 Ene 2011 08:33 pm
ejej error de copy paste
tienes que concatenar las variables cuando usas variables fuera de strings

Código PHP :

echo "<a href='".urlencode($dir$archivos)."' class='Estilo2'>". $archivos ."</a><br />"; 

ahora si te funcionara

Código PHP :

echo "<a href='".urlencode($dir.$archivos)."' class='Estilo2'>". $archivos ."</a><br />"; 

aunque creo que lo correcto seria

Código PHP :

echo "<a href='$dir".urlencode($archivos)."' class='Estilo2'>". $archivos ."</a><br />"; 

ya que es el archivo el que te el problema no

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Ene 2011 09:16 pm
No me sirve ninguno de los códigos que me pusiste xD utilizo linux de servidor por si sirve de algo.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 12 Ene 2011 10:25 pm

almeriaa escribió:

No me sirve ninguno de los códigos que me pusiste xD utilizo linux de servidor por si sirve de algo.

como es un SO decente hay que respetar las mayúsculas y minúsculas!

podrías hacer pruebas colocando algo como:

  • nombre.ext
  • nom bre.ext
  • nombré.ext

Por jpcw

Claber

1715 de clabLevel

1 tutorial

Genero:Masculino  

AlgoritmicBrainDesigner

chrome
Citar            
MensajeEscrito el 13 Ene 2011 02:23 pm
Me da eror lo ponga con mayúscula o minúscula.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 13 Ene 2011 04:06 pm
pero q error te da? puedes poner el error q te lanza?

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 13 Ene 2011 04:48 pm
Mira, me da este error:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /var/www/vhosts/xxxx.com/subdomains/xxxx/httpdocs/subida/listar.php on line
13
Y tiene este código puesto:
<?
$dir = "descargas/";
$arrayEx = array('doc','pdf','mp3','txt','ppt'); // Carpeta que contiene a los archivos subidos
// etc... extensiones que se quieren leer

$countArry = count($arrayEx); // Contamos la cantidad de extensiones en el array
if(is_dir($dir)) { // Verificamos que se nos pase una carpeta...
$fp = opendir($dir); // Abrimos la carpeta...
while(false!==($archivos = readdir($fp))) { // Leemos los archivos de la carpeta...

for($i=0;$i<$countArry;$i++) {
if(strpos($archivos,$arrayEx[$i],1)) { // Buscamos los archivos con las extensiones que le pasamos...
echo "<a href='".urlencode($dir$archivos)."' class='Estilo2'>". $archivos ."</a><br />";  
}
}
}
}
closedir($fp);

?>
Gracias por las molestias.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 13 Ene 2011 10:39 pm
pero tienes que poernle un punto ya respondi a eso mas arriba trata de leer todas las respuestas el error esta en esta parte

urlencode($dir$archivos)
tiene que ser
urlencode($dir.$archivos)

ya que yo me olvide no siempre hagas copypaste trata de comprender ya que muchos de nosotros damos respuestas las cuales rara vez hacemos pruebas en nuestra maquina local ya q podriamos responderte desde una maquina ajena u otro dispositivo como mi android

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 Ene 2011 01:04 pm
VAle, me sigue sin funcionar, he revisado el código y le puse el . entre $dir y $archivo, pero nada. EStoy viendo todas las cosas del código para lo que sirven, pero por mucho que mire no llego ha encontrar el error. ME sigue dando el mismo error que puse mas arriba en la linea 13.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 14 Ene 2011 01:27 pm
realmente extraño
trate de reproducir el supuesto error y nada estas seguro que es de ese script?
que version de php tienes? y que version de server?

Código PHP :

$dir = "./";
$arrayEx = array('doc','pdf','mp3','txt','ppt','php'); // Carpeta que contiene a los archivos subidos
// etc... extensiones que se quieren leer

$countArry = count($arrayEx); // Contamos la cantidad de extensiones en el array
if(is_dir($dir)) { // Verificamos que se nos pase una carpeta...
   $fp = opendir($dir); // Abrimos la carpeta...
   while(false!==($archivos = readdir($fp))) { // Leemos los archivos de la carpeta...

      for($i=0;$i<$countArry;$i++) {
         if(strpos($archivos,$arrayEx[$i],1)) { // Buscamos los archivos con las extensiones que le pasamos...
            echo "<a href='$dir".urlencode($archivos)."' class='Estilo2'>". $archivos ."</a><br />";  
         }
      }
   }
}
closedir($fp);

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 15 Ene 2011 03:10 pm
Perdón por tardar tanto en la respuesta, estos son los datos:
PHP Version 5.2.6-1+lenny9
Linux lh010.interdominios.com 2.6.26-2-amd64 #1 SMP Thu Nov 25 04:30:55 UTC 2010 x86_64  

Este código me sirve, pero solo me lista sin enlaces los archivos de los subdirectiros y me muestra el nombre de los archivos se podría arreglar para que me mostrase los enlaces de los archivos?. Gracias

<?
//definimos el directorio donde se guadan los archivos
$path = "./";
//abrimos el directorio
$dir = opendir($path);
//guardamos los archivos en un arreglo
$img_total=0;
while ($elemento = readdir($dir))
{
if (strlen($elemento)>3)
{
$img_array[$img_total]<a href="=$elemento">;
}

$img_total++;
}

for ($i=0;$i<$img_total; $i++)
{
$imagen = $img_array[$i];
$num = $i+1;
$pathimagen=$path.$imagen;
if ($columna==1)
echo "<tr>"; // para empezar una nueva linea
echo "<td align='center'>";
echo"<img src='$pathimagen' width='100' height='100' border=0 >";
echo "<br>".$imagen."</a>";
echo "</td>";
if ($columna == $img_col)
{
$columna=1;
echo "</tr>";
}
else
{
$columna++;
}
}
?>

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 15 Ene 2011 06:49 pm
mira recuerda q cuando se habal de un server se manejan 2 PATH
la interna de la PC yas e linux o windows como c:/windows/sitios/imagenes y la del servidor como apache por al cual se accede a los recursos como http://ejemplo.com/imagenes/

ahora la logica es reemplazar un por otro por ejemplo estas dos

c:/windows/sitios/imagenes
http://ejemplo.com/imagenes/

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 15 Ene 2011 08:16 pm
lo que tu me quieres decir que sustitulla el directorio por la url de mi web es decir, xx.com/subida/descargas/ ? gracias por las molestias.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 15 Ene 2011 09:56 pm
Vale, ya se lo que le pasa. El problema está en los archivos que tienen acentos, he probado un código que el archivo puede tener todas las letras que pueda, números pero no puede tener acentos he pensado entonces, como podría hacer un formulario de upload y que cuando subiesen el archivo c

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 16 Ene 2011 10:10 am
Perdón, que no se que le pasó al formlario que no envió toda la info, quería decir que como puedxo hacer un form que al enviarle el archivo directamente vea si tiene acentos y por ejemplo una é la cambie por una e á por a í por i ó por o ú por u gracias

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 16 Ene 2011 10:13 pm

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.