Foros del Web » Programando para Internet » PHP »

descargar archivos de una base de datos

Estas en el tema de descargar archivos de una base de datos en el foro de PHP en Foros del Web. Buenas a todos, tengo un problema con la descarga de documentos que han sido subidos a una base de datos pues resulta que descarga el ...
  #1 (permalink)  
Antiguo 09/04/2013, 00:59
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 10 meses
Puntos: 8
Pregunta descargar archivos de una base de datos

Buenas a todos,

tengo un problema con la descarga de documentos que han sido subidos a una base de datos pues resulta que descarga el documento pero vacio en blanco, si subo un documento excel lo descarga pero en blanco

el documento lo subi con este codigo:

Código PHP:
Ver original
  1. addslashes(fread(fopen($_FILES['archivo']['tmp_name'][$z],"r"),filesize($_FILES['archivo']['tmp_name'][$z])));
y al descargar uso un header('content-type: application/formato')...

cual podria ser el problema? a los que me puedan ayudar de ante manu muchas GRACIAS
  #2 (permalink)  
Antiguo 09/04/2013, 03:22
 
Fecha de Ingreso: septiembre-2008
Ubicación: Valencia
Mensajes: 160
Antigüedad: 15 años, 7 meses
Puntos: 2
Respuesta: descargar archivos de una base de datos

Es más simple que todo ese código, o almenos es de la forma que lo uso yo.
Código PHP:
$Descargar = ; // Directorio y nombre de archivo con extensión
header("Content-disposition: attachment; filename=$Descargar");
header("Content-type: application/octet-stream");
readfile($Descargar); 
Si quieres prueba a añadir a tu código el readfile simplemente.

De la forma que te he puesto te descarga todo tipo de arvhivos, sea cual sea la extendión.

$Descargar es la dirrección del arvhivos que ahs guardado en la BD, como puede ser $Descargar = "Archivos/".$BD; por ejemplo.
  #3 (permalink)  
Antiguo 09/04/2013, 05:07
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 10 meses
Puntos: 8
Respuesta: descargar archivos de una base de datos

Cita:
Iniciado por Oracles Ver Mensaje
Es más simple que todo ese código, o almenos es de la forma que lo uso yo.
Código PHP:
$Descargar = ; // Directorio y nombre de archivo con extensión
header("Content-disposition: attachment; filename=$Descargar");
header("Content-type: application/octet-stream");
readfile($Descargar); 
Si quieres prueba a añadir a tu código el readfile simplemente.

De la forma que te he puesto te descarga todo tipo de arvhivos, sea cual sea la extendión.

$Descargar es la dirrección del arvhivos que ahs guardado en la BD, como puede ser $Descargar = "Archivos/".$BD; por ejemplo.
Gracias por tu respuesta pero no es de una direcion de la que voy, a descargar es directamente de la base de datos...

los archivos estan guardados en la base de datos en binario, en este caso como se haria?
  #4 (permalink)  
Antiguo 09/04/2013, 07:11
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 10 meses
Puntos: 8
Respuesta: descargar archivos de una base de datos

Mi caso es que los archivos estan guardados en binarios en la base de datos
  #5 (permalink)  
Antiguo 09/04/2013, 08:15
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 9 meses
Puntos: 181
Respuesta: descargar archivos de una base de datos

En este proyecto realizan lo que tu necesitas, explican tanto subirlo a la base de datos como recuperarlo.

http://gssdms.sourceforge.net/

Yo tenía el código original pero como lo modifique para que no fuera tipo blob la subida de archivos no lo tengo a la mano.

Si quieres lo puedes instalar y usar o basarte en este para lograr tu solución.

(Tengo que aclarar que cuando lo use por primera vez tenia unos errores el codigo fuente pero si tienes paciencia lo puedes arreglar y hacerlo funcionar)

El codigo es viejo (2005) pero parece que le hicieron cambios recientes.

Código PHP:
<?php
#####################################################################
# NAME/ PURPOSE - this file is used to download the file the user
#      has selected.
#
# STATUS - Done
#
# LAST MODIFIED - 02/11/2005
#
# TO DO - nothing. done.
#
# NOTE: Due to the nature of this program being an open-source project,
#       refer to the project website https://sourceforge.net/projects/gssdms/
#        for the most current status on this project and all files within it
#
#####################################################################

require('lib/config.inc');
require(
'lib/auth.inc');
require(
'lib/classes.inc');
require(
'lib/functions.inc');

global 
$cfg;

$tmp explode("/"$REQUEST_URI);
$doc_id $tmp[sizeof($tmp)-2];

@
mysql_connect($cfg[server], $cfg[user], $cfg[pass]) or die("Unable to connect to MySQL server");
@
mysql_select_db($cfg[db]) or die("Unable to select $cfg[db] database");

$user = new user($login);

if( 
may_read($user->id,$doc_id) ) {
    
$res = @mysql_query("SELECT d.id AS id,d.name AS name,d.type AS type,d.size AS size,c.content AS content FROM documents AS d LEFT JOIN documents_content AS c ON d.id=c.id WHERE d.id=$doc_id");
    
$row = @mysql_fetch_array($res);
    
header("Content-Type: $row[type]");
    print(
""base64_decode($row[content]) ."");
    exit;
}

print_header("Permission Denied");
print(
"<h1>Permission denied</h1>\n");
print(
"<p>You are not permitted to access this file.</p>");
print_footer();
?>
Si subiste los datos con base64_encode pues toca decodificarlos como puedes ver con base64_decode. Esto lo obtuve del dms que te comente. Seguro con eso logras lo que necesitas.
__________________
Blog de humor http://elcuasatar.net63.net/

Última edición por cuasatar; 09/04/2013 a las 08:26
  #6 (permalink)  
Antiguo 09/04/2013, 13:45
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 11 años, 10 meses
Puntos: 8
Respuesta: descargar archivos de una base de datos

ya lo puse solucionar pero creo que de este modo no es seguro al guardar los archivos lo que hice fue quitar addslashes y lo deje directamente con fread()...

pero con mysql_real_escape_string() libero caracteres especiales...
si tienen alguna otra idea?

Etiquetas: Ninguno
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 14:37.