Cargando

Ir a contenido



Ver Más! Que no te lo cuenten, es mejor VERLO 👀 !! En este vídeo verás una buena forma de entender cómo trabajamos para ayudarte. Únete, y danos tu Like 👍🏻 para ayudarnos, GRACIAS!


con PHP, al crear e intentar almacenar imagen en archivo (con Fopen y Fwrite) se genera archivo corrupto



2 Respuestas de expertos

#1   enriquev3000

  •   Reputación:0
  •   Respuestas:10

Publicado 10 junio 2014 - 03:31

Hola a todos. Espero que alguien por favor me pueda ayudar con este inconveniente:

Estoy tomando una imagen de una tabla de la BD, y la imprimo en el encabezado de un reporte (PDF) usando la librería Fpdf. Para esto, guardo la imagen en un archivo y luego muestro el contenido del archivo dentro de la función Header(). Esto me funciona bien ejecutando el programa en el sitio Local.

Pero cuando intento ejecutar la solución ya en el sitio web de Producción, veo que no se logra almacenar la información de la imagen. El archivo que normalmente se genera con la imagen, es de 14.311 Bytes (14 KB); y dentro del sitio web se genera el archivo pero con 4 Bytes (0 KB), y cuando lo abro con el visualizador de fotos de Windows, dentro de él no se ve la imagen sino la leyenda "Visualizador de fotos de Windows no puede abrir esta imagen porque el archivo parece estar dañado o es demasiado grande". Cuando lo intento abrir con Paint se genera el siguiente mensaje de advertencia: "Paint no puede leer este archivo. Este archivo no es un archivo de mapa de bits válido o su formato no es compatible".

Lo que pienso que sucede es que no se logra almacenar la imagen y queda un archivo corrupto.

básicamente las instrucciones que uso para solucionar la toma de la imagen de la BD y mostrarla en el encabezado son:
****** ****** ****** ****** ****** ******
> $reg = mysql_fetch_array($result, MYSQL_ASSOC); (previamente ya se ha hecho el Select)
> $var_imagen = $reg['LOGO']; (el campo LOGO es tipo llongblob)
> $handle = fopen("Imagenes/temp/mi_imagen.jpg", 'x'); (se crea el archivo con extensión jpg)
> fwrite($handle, $var_imagen); (se almacena la imagen de la BD dentro del archivo creado)
> $this->Image('Imagenes/temp/mi_imagen.jpg', 10,10,80,'','jpg');
****** ****** ****** ****** ****** ******

En lugar de usar "Fopen" y "Fwrite", ya lo he hecho usando "file_put_contents", con lo cual sucede lo mismo: funciona too bien en el sitio Local, pero en el Sitio Web de Producción se genera el archivo con el mismo inconveniente tal cual.

¿Alguien sabe qué podría estar sucediendo ? Les agradecería mucho si pueden colaborarme.
  • ¿Tienes la misma pregunta? Yo también
  • Volver arriba

#2   Jhony10

  •   Reputación:383
  •   Respuestas:396
  •   Tutoriales:5

Publicado 10 junio 2014 - 15:34

Al funcionarte en local y no en producción parece ser un problema de configuración de los ajustes de PHP, verifica el parámetro allow-url-fopen en tu php.ini, si está desactivado debes activarlo.

#3   enriquev3000

  •   Reputación:0
  •   Respuestas:10

Publicado 10 junio 2014 - 21:17  AUTOR PREGUNTA

Gracias. Ya verifiqué el valor para allow-url-fopen, y está en "ON" - está activada.


No esperes más y entra en Solvetic
Deja tus soluciones y aprovecha las ventajas de la cuenta de usuario ¡Únete!



x

¿Tienes otra pregunta? Aquí puedes encontrar más soluciones!

¿Sigues sin solución? Realiza tu pregunta gratis en Solvetic ¡Únete!