Foros del Web » Programando para Internet » PHP »

Problema al subir archivos a Mysql

Estas en el tema de Problema al subir archivos a Mysql en el foro de PHP en Foros del Web. Deje un mensaje similar en el foro de Mysql. Puede que a los moderadores esto no les guste, pero es que realmente lo que me ...
  #1 (permalink)  
Antiguo 17/12/2007, 03:27
 
Fecha de Ingreso: septiembre-2005
Mensajes: 80
Antigüedad: 18 años, 7 meses
Puntos: 0
Problema al subir archivos a Mysql

Deje un mensaje similar en el foro de Mysql. Puede que a los moderadores esto no les guste, pero es que realmente lo que me pasa no se a quien "hecharle la culpa" si a PHP o a MYSQL

Cuesto que me pasa:

Tengo un script muy similar al de un ejemplo del foro que permite guardar archivos (de cualquier tipo) en campos de la base de datos

Este script ya esta funcionando en un sistema, desde hace un par de meses. Y funciona bien. Esta preparado para guardar/mostrar cualquier tipo de archivos, no solo PDF.

El punto es que desde hace una semana, empezamos a tener un problema con ciertos archivos PDF. No con todos. Los PDF que subimos (~300kb de promedio) son una especie de planos tecnicos. Osea tienen graficos, lineas, etc. No es meramente texto.

Vean lo que sucede:

* Si miramos el archivo PDF original desde Acrobat Reader 7 o Foxit Reader, (previo a subirlo al sistema) se ve perfecto.
* Si lo subimos por nuestro sistema, al server llega bien. Lo hemos mostrado previo a guardarlo en la base, para hacer testeos.
* En la base se guarda seguro. Pero ya dudamos si bien o corrupto.
* Al leerlo de la base y mostrarlo, sucede que:
o Acrobat Reader se abre. Muestra siempre el mensaje de alerta "Problema al leer el documento (111)". Y luego muestra el archivo PDF, pero no completo. Solo muestra la ultima capa de graficos del archivo. Las capas superiores con otras lineas o textos no se muestran.
o Lo mismo sucede con Foxit Reader excepto que no muestra ningun mensaje de error.


Cuando me refiero a capa, no se si estoy aplicando bien el termino. Me quiero referir a que nuestros PDF, muestran planos tecnicos, como dije. Y al verlos da la sensacion de ser capas o layer (como en un programa de diseño) una arriba de la otra. Cada una con ciertas imagenes. La capa que vemos es la de mas abajo (o mas atras como quieran verlo)

Es muy extraño el comportamiento ya que no lo hace con todos los PDF.
No tenemos acceso al software, y/o a la persona quien genera esos PDF, como para averiguar algo.
No encontre en Google nada relacionado el mensaje puntual de error que muestra Acrobat.

Ojala puedan darme una pista, ya que es de vital importancia saber como solucionar el tema. Y (tal vez) se me ocurre que se deba modificar la rutina de carga a la base ya que es casi indudable que la info se guarda en forma corrupta en ciertos casos.

MUCHAS GRACIAS de antemano
  #2 (permalink)  
Antiguo 17/12/2007, 03:37
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Problema al subir archivos a Mysql

¿El tamaño del fichero despues de guardarlo en la BD es el mismo que originalmente? ¿Muestras el contenido directamente de la BD o generas un fichero temporal? Prueba a volcar los datos de la BD a un fichero, y comprobar si ese fichero se ve bien. ¿Seguro que no es por el tamaño del fichero o del tamaño del campo de la BD?

Por ultimo, sin ver el codigo que guarda en el campo o el que lo muestra, puede ser quizas algun problema de tamaños, caracteres especiales, o alguna rareza.
  #3 (permalink)  
Antiguo 17/12/2007, 04:21
 
Fecha de Ingreso: septiembre-2005
Mensajes: 80
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: Problema al subir archivos a Mysql

Te cuento:

El campo ya era de tipo LONGBLOB al momento de escribir este mensaje. Por error mio coloque BLOB en el mensaje anterior. Con eso, me parece que descartamos el tema del tamaño.

Yo estaba mostrando el archivo desde la base, directamente, osea un SELECT, luego los HEADER y luego el ECHO final.
Cambie a grabarlo primero, como sugerias, y el archivo creado en el rigido aun presenta problemas.
Mi codigo ahora hace el SELECT y luego usa la linea
Código PHP:
file_put_contents'c:/'.$resultado['nombre'], $resultado['archivo'] ); 
Ahora por tus sugerencias encontre esto:
  • El archivo original mide 277.031 bytes.
  • Si lo muestro desde el array $_FILES, sin guardarlo en la base, se ve bien
  • Una vez guardado si hago un SELECT LENGTH(archivo) .... me devuelve 277.006, osea 25 bytes MENOS !!!
  • Luego si leo el archivo de la base y lo guardo a un archivo, mantiene los 277.006.

Osea que, primera conclusion, se guardo mal en la base.

Y ahora? que puedo llegar a cambiar?

Gracias por la ayuda
  #4 (permalink)  
Antiguo 17/12/2007, 09:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema al subir archivos a Mysql

Podrias publicar el codigo que usas para almacenarlo en la base de datos?

Saludos.
  #5 (permalink)  
Antiguo 17/12/2007, 09:25
 
Fecha de Ingreso: septiembre-2005
Mensajes: 80
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: Problema al subir archivos a Mysql

No lo tengo a mano en este momento. Esta en casa.

Pero es una copia del script publicado en estos foros, en un tema titulado: tutorial para guardar archivos en el server.
  #6 (permalink)  
Antiguo 17/12/2007, 09:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema al subir archivos a Mysql

Debe de ser algún problema seguramente en la forma de almacenar en la base de datos lo que ocasiona que tenga ese problema.
  #7 (permalink)  
Antiguo 17/12/2007, 09:51
 
Fecha de Ingreso: septiembre-2005
Mensajes: 80
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: Problema al subir archivos a Mysql

Yo estoy dudando en ciertos caracteres que se guarden mal en la base. Pero se deberia entonces a que la funcion addslashes haga el problema.

que otra funcion hace cosas parecidas a esa?
Yo probe con mysql_real_escape y tampoco tube exito.
¿Sera esto un bug Mysql?
  #8 (permalink)  
Antiguo 17/12/2007, 12:05
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Problema al subir archivos a Mysql

Porque no guardas el contenido usando base64_encode? y luego base64_decode?

Saludos.
  #9 (permalink)  
Antiguo 18/12/2007, 06:45
 
Fecha de Ingreso: septiembre-2005
Mensajes: 80
Antigüedad: 18 años, 7 meses
Puntos: 0
Re: Problema al subir archivos a Mysql

Disculpen haberlos hecho perder tiempo.
Acabo de darme cuenta que una funcion hecha en el clase de abstraccion a MYSQL, hacia unos recortes de espacios en los string, que afectaban la query en cuestion, y terminaba quedando corrupto el string con el contenido del PDF.

Muchas gracias a todos, por querer darme una mano.

A los moderadores, no estaria mal que eliminaran el tema directamente, asi no confundimos a futuros lectores.

Adios
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 04:09.