Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/11/2012, 13:02
munekitacazibarbie
 
Fecha de Ingreso: octubre-2012
Ubicación: México
Mensajes: 40
Antigüedad: 12 años, 3 meses
Puntos: 1
Guardar ruta de archivo y descargarlo de bd

Hola!!

Espero puedan ayudarme, estoy iniciando en esto de programar en php y sinceramente no se que mas puedo hacer...

Resulta que tengo que subir un archivo a mi bd y guardar la ruta para poder descargarlo, lo estoy haciendo de manera local, uso xampp.. mi bd tiene los siguientes campos:

-id
-name
-description
-ruta
-tipo
-size

El código que utilizo para guardar los archivos es el siguiente:

Código PHP:
<?php  
 
if (isset($_POST['submit'])) {  
    if(
is_uploaded_file($_FILES['fichero']['tmp_name'])) {
     
        
$ruta_destino "C:/xampp/htdocs/documentos/";
        
$namefinaltrim ($_FILES['fichero']['name']); 
        
$namefinalereg_replace (" """$namefinal);
        
$uploadfile$ruta_destino $namefinal;  
 
        if(
move_uploaded_file($_FILES['fichero']['tmp_name'], $uploadfile)) { // se coloca en su lugar final  
                   
                    
echo "<b>Upload exitoso!. Datos:</b><br>";  
                    echo 
"Nombre: <i><a href=\"".$ruta_destino $_FILES['fichero']['name']."\">".$_FILES['fichero']['name']."</a></i><br>";  
                    echo 
"Tipo MIME: <i>".$_FILES['fichero']['type']."</i><br>";  
                    echo 
"Peso: <i>".$_FILES['fichero']['size']." bytes</i><br>";  
                    echo 
"<br><hr><br>";  
                         
//conectamos a la base de datos 
 
                 
mysql_connect('localhost','root')or die ('Ha fallado la conexión: '.mysql_error());
                 
mysql_select_db('directorio')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
 
                   
$nombre_archivo  $_POST["nombre_archivo"];
                   
$description  $_POST["description"];
  
                   
$query "INSERT INTO archivos  
   VALUES (0,'$nombre_archivo','$description' , '"
.$_FILES['fichero']['name']."','".$_FILES['fichero']['type']."', '".$_FILES['fichero']         ['size']."')";
 
       
mysql_query($query) or die(mysql_error());
       echo 
"El archivo '".$nombre_archivo."' ha sido registrado de manera satisfactoria.<br />";
                                   
        }  
    }  
 }
          
// A continuación el formulario  
?>
Código HTML:
<body>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" enctype="multipart/form-data">  
    Archivo: <input name="fichero" type="file" size="150" maxlength="150">  
    <br> Nombre: <input name="nombre_archivo" type="text" size="70" maxlength="70">
    <br> Descripcion: <input name="description" type="text" size="100" maxlength="250">
    <br>
  <input name="submit" type="submit" value="Upload!">  
</form> 
Eso si me funciona.. sólo que en la bd se guarda en "ruta" el nombre del archivo con la extensión: prueba.docx, despues listo los resultados para descargarlos con este código:

Código PHP:
<?php    
    
//listar_archivos.php
             
    
$conexion mysql_connect('localhost','root')or die ('Ha fallado la conexión: '.mysql_error());
    
mysql_select_db('directorio')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
     
               
$_pagi_sql "SELECT   id, name, description, ruta, tipo, size FROM archivos";  
               
$_pagi_result mysql_query($_pagi_sql $conexion) or die ( mysql_error() );  
     
        while(
$row mysql_fetch_array($_pagi_result)){
     
    echo 
"<table width=70%><tr bgcolor= #61e877><div align=center>";
     
                       echo 
"<b>Titulo: </b>";
                       echo 
$row['name'];
                 echo 
"</div></tr>";
                 echo
"<tr>&nbsp;</tr>";
                 echo 
"<tr bgcolor= #cccccc><b> &nbsp;&nbsp;&nbsp;Descripcion: </b><br>";
     
                       echo 
$row['description'];
                   
                  echo 
"</tr>";
     
                echo
"<tr bgcolor= #cccccc >&nbsp;</tr>";
                echo 
"<tr bgcolor= #cccccc><b> &nbsp;&nbsp;&nbsp;Tamaño: </b>";
                  echo 
$row['size']." Bytes";
     
                 echo 
"</tr>";
    
              echo
"<tr bgcolor= #cccccc>&nbsp;</tr>";
               echo 
"<tr bgcolor= #cccccc><div align=center><a href=\"descargar.php?ruta=archivos/$row[ruta]\">Descargar</a></div>";  
              echo 
"</tr>";
              echo
"<tr bgcolor= #cccccc>&nbsp;</tr>";
     
    echo 
"</table>" ;
     
        }    
    
?>
y al darle descargar me sale esto:

¡Objeto no encontrado!

El enlace requerido no ha sido localizado en este servidor. El enlace en la página referente parece tener algun error o ha expirado. Por favor comunique al autor de la página el error.

Por favor contacte con el webmaster en caso de que usted crea que existe un error en el servidor.
Error 404
localhost
11/20/12 12:58:11
Apache/2.2.4 (Win32) DAV/2 mod_ssl/2.2.4 OpenSSL/0.9.8e mod_autoindex_color PHP/5.2.2

el código para descargar es este:

Código PHP:
<?php 
    header
("Content-Disposition: attachment; filename=ruta_al_archivo");
    
$ruta $_GET['ruta'];
    
$archivo_arr explode"/"$ruta );
    
$archivo $archivo_arr[count($archivo_arr) - 1];
     
    if( !
file_exists$ruta ) ) {
             die( 
"No existe $ruta" );
    }
     
    
header"Content-Disposition: attachment; filename=".$archivo."");
    
header"Content-type: application/octet-stream" );  
    
header("Content-Length: ".filesize($ruta)); //header que envia al navegador el tamaño del archivo.
     
    
@readfile$ruta );  
    
?>
Por favor ayudenme ya estoy desesperada