Foros del Web » Programando para Internet » PHP »

Error al Descargar contenido BLOB de mysql por medio de php

Estas en el tema de Error al Descargar contenido BLOB de mysql por medio de php en el foro de PHP en Foros del Web. Intento realizar la descarga de archivos previamente cargados en una BD de MySql, el archivo se ejecuta, pero al abrir el archivo descargado me muestra ...
  #1 (permalink)  
Antiguo 05/05/2014, 10:37
 
Fecha de Ingreso: abril-2013
Mensajes: 7
Antigüedad: 11 años
Puntos: 0
Exclamación Error al Descargar contenido BLOB de mysql por medio de php

Intento realizar la descarga de archivos previamente cargados en una BD de MySql, el archivo se ejecuta, pero al abrir el archivo descargado me muestra el archivo dañado

El código de la descarga es el siguiente:
Código PHP:
Ver original
  1. $extenciones = array('txt' => 'text/plain',
  2.             'htm' => 'text/html',
  3.             'html' => 'text/html',
  4.             'php' => 'text/html',
  5.             'css' => 'text/css',
  6.             'js' => 'application/javascript',
  7.             'xml' => 'application/xml',
  8.  
  9.             // images
  10.             'png' => 'image/png',
  11.             'jpe' => 'image/jpeg',
  12.             'jpeg' => 'image/jpeg',
  13.             'jpg' => 'image/jpeg',
  14.             'gif' => 'image/gif',
  15.             'bmp' => 'image/bmp',
  16.             'ico' => 'image/vnd.microsoft.icon',
  17.  
  18.             'zip' => 'application/zip',
  19.             'rar' => 'application/x-rar-compressed',
  20.  
  21.             'pdf' => 'application/pdf',
  22.             'doc' => 'application/msword',
  23. );
  24. //$id = $_GET['idarchivos'];
  25. $id = $_GET['idarchivos'];
  26. $query = "SELECT tipo, archivo, nombre_archivo, nombre_D FROM archivos WHERE idarchivos = '$id'";
  27. $resultado = mysql_query($query)or die(mysql_error());
  28. $tipo = mysql_result($resultado, 0, "tipo");
  29. $contenido = mysql_result($resultado, 0, "archivo");
  30. $nombre = mysql_result($resultado, 0, "nombre_D");
  31. header('Content-Type: application/force-download');
  32. header("Content-type: $tipo");
  33. header('Content-disposition: attachment; filename="'.$nombre.'.'.$extenciones[$tipo].'"');
  34.  echo $contenido;

Última edición por Triby; 05/05/2014 a las 23:33 Razón: Código en highlight
  #2 (permalink)  
Antiguo 05/05/2014, 23:35
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Error al Descargar contenido BLOB de mysql por medio de php

Si la descarga no funciona, tal vez el error está en la forma de insertarlo en la base de datos, o aplicaste algún procedimiento para codificar y, simplemente, necesitas revertirlo.

Sería más fácil tratar de ayudarte si muestras como guardas el archivo.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 06/05/2014, 03:15
 
Fecha de Ingreso: mayo-2011
Ubicación: Zaragoza
Mensajes: 58
Antigüedad: 12 años, 11 meses
Puntos: 5
Respuesta: Error al Descargar contenido BLOB de mysql por medio de php

Buenas:

Me da la sensacion que has invertido esto:

Código PHP:
Ver original
  1. header("Content-type: $tipo");
  2. header('Content-disposition: attachment; filename="'.$nombre.'.'.$extenciones[$tipo].'"');

Y deberia ser asi?:
Código PHP:
Ver original
  1. header("Content-type: $extenciones[$tipo]");
  2. header('Content-disposition: attachment; filename="'.$nombre.'.'.$tipo.'"');

Mas que nada por que en http://en.wikipedia.org/wiki/MIME pone un ejemplo:

Content-Type: text/plain

y por otro lado:

Content-Disposition: attachment; filename=genome.jpeg;

De todas formas si no es esto podrias usar alguna extension que revise las cabeceras de lo que recibes a ver si puede estar el fallo alli.

Saludos.

Etiquetas: mysql
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 03:11.