Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/01/2014, 11:34
silo
 
Fecha de Ingreso: enero-2010
Mensajes: 76
Antigüedad: 14 años, 4 meses
Puntos: 1
Error al cargar archivos en PHP

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($filedate("Y-m-d H:i:s",filemtime($path.'/'.$file)));
        
$files[] = $file;
        
$dates[] = date("Y-m-d H:i:s",filemtime($path.'/'.$file));
    
array_multisort($datesSORT_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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.$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.