Foros del Web » Programando para Internet » PHP »

PHP OO subida y descarga de archivos tipo BLOB de BD

Estas en el tema de subida y descarga de archivos tipo BLOB de BD en el foro de PHP en Foros del Web. Hola amigos, estoy haciendo un ejemplo para subir y descargar archivos tipo BLOB en la BD, tengo el ejemplo funcionando bien en el localhost pero ...
  #1 (permalink)  
Antiguo 06/06/2013, 07:50
 
Fecha de Ingreso: agosto-2011
Ubicación: por ahi
Mensajes: 28
Antigüedad: 12 años, 8 meses
Puntos: 0
Pregunta subida y descarga de archivos tipo BLOB de BD

Hola amigos, estoy haciendo un ejemplo para subir y descargar archivos tipo BLOB en la BD, tengo el ejemplo funcionando bien en el localhost pero cuando lo intenté probar en un hosting, subia los archivos de igual manera pero se descargaban vacios y la verdad no tengo la menor idea de que podria ser, quizás algunos de ustedes ya les ha pasado algo parecido.

Aqui les pongo un poco de codigo php:
Código PHP:
<?php
if(isset($_POST['guardar'])){
    
//conectamos al servidor
   
mysql_connect("localhost""root""") or die(mysql_error()); // Connect to database server(localhost) with username and password.
            
mysql_select_db("prueba") or die(mysql_error()); // Select registration database.
 
    //abrimos el archivo temporal que se crea
    
$fh fopen($_FILES['archivo']['tmp_name'],'r');
    if(
$fh){    //si se abre bien leemos el archivo
        
$archivo fread($fhfilesize($_FILES['archivo']['tmp_name']));
        
fclose($fh);
       
        
//limpiamos el contenido
        
$archivo addslashes($archivo);
        
$tipo $_FILES['archivo']['type'];
        
//nombre del archivo
        
if(empty($_POST['nombre']))
            
$nombre $_FILES['archivo']['name'];
        else
            
$nombre $_POST['nombre'];
           
        
//insertar el archivo a la bd
        
$sql="insert into archivos (nombre, archivo, tipo) values ('$nombre', '$archivo', '$tipo')";
        
mysql_query($sql);
       
        
//echo "El archivo se cargo con exito<br />";
    
} else
        echo 
"Error al cargar el archivo<br />";
}   
?>
Gracias de antemano.
Saludos!
  #2 (permalink)  
Antiguo 06/06/2013, 08:10
 
Fecha de Ingreso: diciembre-2010
Mensajes: 31
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: subida y descarga de archivos tipo BLOB de BD

Estas mandando el tipo de imagen en el header?..

Yo lo tengo hecho asi como vos... usandolo en varios servidores y nunca tuve problemas..

Fijate que puede ser en como estas mandando el header al navegador.

Saludos.
  #3 (permalink)  
Antiguo 06/06/2013, 08:27
 
Fecha de Ingreso: agosto-2011
Ubicación: por ahi
Mensajes: 28
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: subida y descarga de archivos tipo BLOB de BD

Hola que tal Sebas,
Gracias por la respuesta,
Desde el Archivo "subir.php" tengo lo siguiente, con esto muestro la lista de archivos con su respectivo enlace para descargar :

Código PHP:
<?php
//conectamos al servidor
  
mysql_connect("localhost""root""") or die(mysql_error()); // Connect to database server(localhost) with username and password.
            
mysql_select_db("prueba") or die(mysql_error()); // Select registration database.
   
    //seleccionamos los archivos que hay en la db
    
$sql "SELECT * FROM archivos";
    
$res mysql_query($sql);
    
$lista '<ol>'//generamos la lista
    
while($data mysql_fetch_assoc($res)){
        
$lista .= '<li>
        <a href="descargar.php?descarga='
.$data['id'].'">
            '
.$data['nombre'].'
        </a>
    </li>'
;
    }
    
$lista .= '</ol>';
    echo 
$lista;
?>

y tengo otro archivo por separado para descargar, "descarga.php":
Código PHP:
<?php
if($_GET['descarga']){
    
//conectamos al servidor
   
mysql_connect("localhost""root""") or die(mysql_error()); // Connect to database server(localhost) with username and password.
            
mysql_select_db("prueba") or die(mysql_error()); // Select registration database.
   
    
$sql "select * from archivos where id = ".$_GET['descarga'];
    
$res mysql_query($sql);
    
$data mysql_fetch_assoc($res);
   
    
header("Content-type: ".$data['tipo']);
    
header("Content-Disposition: attachment; filename=".$data['nombre']);   
    print(
$data['archivo']);
}
?>
  #4 (permalink)  
Antiguo 06/06/2013, 08:48
 
Fecha de Ingreso: diciembre-2010
Mensajes: 31
Antigüedad: 13 años, 4 meses
Puntos: 0
Respuesta: subida y descarga de archivos tipo BLOB de BD

Mira en ves de print_r usa echo... Yo te recomendaria esto.

header("Content-type: {$data['tipo']}");
header("Content-Disposition: attachment; filename={$data['nombre']}");
header("Content-Transfer-Encoding: binary");
echo$data['archivo'];

Ahi le estarias imprimiendo el binario y le estarias diciendo que es una imagen del tipo que le pasas...

COn eso te deberia andar
  #5 (permalink)  
Antiguo 07/06/2013, 03:36
 
Fecha de Ingreso: agosto-2011
Ubicación: por ahi
Mensajes: 28
Antigüedad: 12 años, 8 meses
Puntos: 0
De acuerdo Respuesta: subida y descarga de archivos tipo BLOB de BD

Hola que tal,

Ya probé lo que sugeriste en localhost y funciona de igual manera para subir y descargar todo muy bien, en el hosting tengo los mismos archivos pero sigue sin funcionar, los archivos office y de texto plano los descarga vacios y los PDF me sale un error y con las imagenes de igual manera no se pueden visualizar, ya me estoy haciendo loco con esto jaja, igual gracias por la ayuda.

Saludos!!

Etiquetas: bd, blob, mysql, select, sql, subida, tipo
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:18.