Foros del Web » Programando para Internet » PHP »

que jaleo con los directorios: ahora renombrar y descargar

Estas en el tema de que jaleo con los directorios: ahora renombrar y descargar en el foro de PHP en Foros del Web. muy buenas a todos. esto de las funciones y ordenes dentro de los directorios es algo que jamás creí que se me atragantara tanto. si ...
  #1 (permalink)  
Antiguo 22/04/2007, 04:32
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
que jaleo con los directorios: ahora renombrar y descargar

muy buenas a todos. esto de las funciones y ordenes dentro de los directorios es algo que jamás creí que se me atragantara tanto. si a esto le añadimos las peculiaridades del sistema que desarrollo, se puede hacer una un jaleo enorme. bueno, os cuento.

en mi sistema, el usuario una vez que se registra con un determinado nombre, se crea en el directorio raíz del servidor (llamado módulos, en el cual se guardan todas las carpetas y archivos de la web) un directorio nuevo para ese usuario en concreto con el nombre que ha dado al registrarse. supongamos que el usuario se registra con el nombre de 'pedromanuel'. automáticamente, en el sistema se creará una carpeta llamada 'pedromanuel'.
este usuario, una vez validado su nombre de usuario y su password, podrá acceder a su carpeta y ver los archivos que previamente él mismo ha subido. así, este usuario accederá a su directorio 'pedromanuel'. esto lo hago así:
//////////////////////
Código PHP:
 if(!isset($path))
    {
        
$path "modulos/$nombre";
    } 
recogemos la ruta del directorio, donde 'modulos/' es la carpeta raíz del servidor y donde $nombre es la variable que recoge el valor del nombre introducido por el usuario y que da nombre a su carpeta. así, en este caso, $path sería igual a $path=modulos/pedromanuel:
////////////////////
una vez tenemos la ruta, accedemos al directorio y mostramos tanto los archivos como los subdirectorios que en él pudiera haber:
Código PHP:
if ($handle opendir($path))  
    { 
while (
false !== ($file readdir($handle)))  
        { 
            if (
$file != "." && $file != "..")  
            {     
             
$fName $file
           
$file $path.'/'.$file
///////////////////
una vez tengo ya el acceso para leerlos, los pongo en cada campo.
así, en el campo 'nombre', el código que utilizo para obtener los nombres de los ficheros o subdirectorios es el siguiente:
Código PHP:
if(is_file($file))////si es un fichero 

print
"<a href='".$file."'>".$val."</a>"


if(
is_dir($file))////si es un directorio 

print 
"<a href='index.php?mod=10&path=$file'>$val</a>"

////////////////////////////////////
cuando se trata de ficheros, aparece al lado un campo llamado 'accion' que recoge una serie de opciones que hacer con el fichero, como son 'ver', 'renombrar' y 'descargar'.
bien. para ver el archivo, hacemos click en el enlace 'ver' que tiene de código:
Código PHP:
echo("<a href='".$file."' >Ver</a>"); 
donde $file recoge la ruta en el servidor del archivo en cuestión que queremos ver. así por ejemplo, el archivo 'ejemplo.jpg' tendría
$file=modulos/pedromanuel/ejemplo.jpg
//////////////////////////
pero ahora viene el jaleo.
cuando opto por la opción 'descargar', pincho en el enlace 'descargar' que tiene de código:
Código PHP:
echo ("<a href=descargar.php?id='".$file."' >Descargar</a>"); 
donde $file sigue siendo la ruta de ese archivo. en el ejemplo, sería:

Código PHP:
("<a href=descargar.php?id='modulos/pedromanuel/ejemplo.jpg' >Descargar</a>"); 
esto lleva directamente a la página 'descargar' que tiene este código:
Código PHP:
$id $_GET['id']; 
//conecto con la base de datos donde recojo los datos del archivo en cuestión
$cnx mysql_connect("localhost""user""pass"); 
mysql_select_db("basededatos"$cnx);
//selecciono la tabla y digo que me muestre el nombre del documento (en este caso mostrará 'ejemplo.jpg' cuya ruta (almacenada en el campo 'ruta' de esa tabla) coincide con la variable $id recogida
$sql="SELECT documento FROM archinteg WHERE ruta='".$id."'";
$resultado=mysql_query($sql) or die (mysql_error());
 
while (
$row mysql_fetch_array($resultado)) { 
$documento "".$row['documento'].""
//código para descargar 

    
header("Content-Transfer-Encoding: binary"); 
    
header("Content-type: application/force-download");  
    
header("Content-Disposition:attachment; filename=$documento"); 
    
readfile("$id");



   } 
bien. pues de esta forma todo va correcto, pero lo que me descargo, el fichero, que se llama exactamente igual que el del servidor, no puedo leerlo, me da un error de lectura. dice que el archivo (sea cual sea su extensión) es ilegible y por lo tanto no puedo abrirlo con nada. qué hago mal?

respecto al último apartado, 'renombrar', este no hay forma. he leido las multiples opciones que hay en este foro y en otros pero no lo consigo.

por favor, me echáis un cable con estos temas? gracias.
  #2 (permalink)  
Antiguo 23/04/2007, 00:36
Avatar de estibaliz2006  
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: que jaleo con los directorios: ahora renombrar y descargar

bufff, solucionado. la verdad es que a veces una se bloquea y las cosas más sencillas no las ve.... así que me fui a dar una vuelta, vine y ví las cosas más claritas... qué jaleo!!!! besitos a todos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:25.