Hola amigos.
Tengo un proyecto terminado pero hay un pequeño fallo que no se cómo solucionar y quisiera perdir vuestro consejo.
El tema es que al leer un archivo de un directorio cuando el título del archivo lleva un espacio intermedio, el link me aparece cortado.
Por ejemplo si cargo este archivo
Factura-MOVISTAR.PDF aparese sin errores como el siguiente ejemplo:
Código HTML:
http://dominio.com/2014/Facturas/Emitidas/Marzo/MOVISTAR-%2801-01-2014%29.PDF
Sin embargo cuando el nombre del archivo tiene un espacio intermedio como
Factura MOVISTAR.PDF, el link se genera incompleto como el siguiente ejemplo:
Código HTML:
http://dominio.com/2014/Facturas/Emitidas/Marzo/MOVISTAR
generando un error 404
Un dato curioso es que estoy usando la misma variable
$file también para borrar y este si que lo reconoce completo.
El código que estoy usando es el siguiente:
Código PHP:
<?php
// Ruta
$path = "Facturas/Emitidas/Enero";
// Abrir la carpeta
$dir_handle = @opendir($path);
// Leer los archivos
while ($file = readdir($dir_handle)) {
$data[] = array($file, date("Y-m-d H:i:s",filemtime($path.'/'.$file)));
$files[] = $file;
$dates[] = date("Y-m-d H:i:s",filemtime($path.'/'.$file));
array_multisort($dates, SORT_DESC, $data);
if($file == "." || $file == ".." || $file == "index.php" )
continue;
echo '<a href='.$path.'/'.$file.' target="_blank">Ver</a> / ';
$borrar = 'Facturas/Emitidas/Enero/';
echo '<a href="borrar.php?ruta='.$borrar.'&archivo='.$file.'" onclick="return confirmar('¿Está seguro de borrar este archivo?')">Borrar</a> '.$file.'<br>';
}
// Cerrar
closedir($dir_handle);
?>
Por más vueltas que le doy no encuentro el fallo y me interesa mucho poder solucionarlo ya que no me gustaría tener que estar cambiando los nombres a todos los archivos con caracteres especiales o espacios.
¿Alguien sabría por qué pasa esto y cómo solucionarlo?
Desde ya muy agradecido.