Foros del Web » Programando para Internet » PHP »

Descargar fichero

Estas en el tema de Descargar fichero en el foro de PHP en Foros del Web. Hola, Tengo una aplicación con archivos .pdf guardados en campos BLOB. El problema es cuando el usuario quiere modificar un pdf. Si esto ocurre, lo ...
  #1 (permalink)  
Antiguo 29/11/2010, 06:08
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 5 meses
Puntos: 19
Descargar fichero

Hola,

Tengo una aplicación con archivos .pdf guardados en campos BLOB. El problema es cuando el usuario quiere modificar un pdf.

Si esto ocurre, lo que tengo que hacer es descargarme el archivo, guardarlo AUTOMÁTICAMENTE en disco (sin preguntar al usuario) y realizar las modificaciones oportunas con el mismo.

Problema: ¿se puede hacer? He visto que con header(...) es posible hacer algo parecido (forzar descarga, abrir en el navegador...). ¿También puedo poner algo así como: header(' Content-disposition:"C:/hola/adios" ') ?

¿O no está permitido?

Gracias
  #2 (permalink)  
Antiguo 29/11/2010, 06:11
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Descargar fichero

Lo que pides no es así de simple. Debes buscar alguna librería que te permita convertir el archivo (o en tu caso el contenido) de PDF a un formato que sea modificable y luego hacer los cambios que quieras y volver a convertir el documento a PDF.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 29/11/2010, 06:15
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 5 meses
Puntos: 19
Respuesta: Descargar fichero

Hola abimaelrc,

Ya lo sé. Eso lo tengo hecho ya. Y me funciona. Tengo noticias, y tu puedes insertarles un pdf. Bien, ese pdf se remodela automáticamente gracias a FPDI (pongo el título de la noticia, fecha...). Y eso me sale correctamente.

El problema es que antes tenía los ficheros en una estructura de directorios.

Ahora, sin embargo, lo tengo en campos blob. Por ello, si quieres editar una noticia publicada, y cambias el título de la noticia, yo tengo que abrir tu fichero y modificarlo con FPDI.

Pero ahora no está físicamente, sino en un campo de la BBDD. Por ello, lo que quiero es bajarme ese fichero (sin preguntar), guardarlo en disco, modificarlo, subirlo a la BBDD y nuevamente eliminarlo de local.

Gracias por responder. Espero que puedas ayudarme...

Gracias
  #4 (permalink)  
Antiguo 29/11/2010, 06:17
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Descargar fichero

Pero si ya sabes como modificarlo con FPDF, solo es cuestión de crear el archivo con por ejemplo file_put_contents o usar las funciones de filesystem para escribir el archivo en el servidor, hacer lo que quieras y volver a insertarlo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 29/11/2010, 06:32
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 5 meses
Puntos: 19
Respuesta: Descargar fichero

Hola de nuevo,

Qué rápido eres respondiendo! :) Gracias

Ok... Utilizaré esa función. ¿Sería algo así como esto?

$sql="select fichero from noticias where id=3";
$fichero=lo que he extraido de la consulta
$actual = file_get_contents($fichero);
file_put_contents($actual, 'temporal.pdf');

He probado con esto pero no funciona... Me envía el fichero pdf a la pantalla... Y no me lo guarda en disco...

Se agradece tu ayuda!
  #6 (permalink)  
Antiguo 29/11/2010, 06:42
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Descargar fichero

Sería algo así
Código PHP:
Ver original
  1. <?php
  2. $file = 'tmp.pdf';
  3. if(!file_exists($file)){ file_put_contents($file, ''); }
  4. /*
  5.  * Aquí va tu query y recoger el valor, vamos a supoer que la variable
  6.  * que usaste es $info para el query y hay una columna llamada pdf
  7.  * en la base de datos que contiene el contenido
  8.  */
  9. file_put_contents($file, $info['pdf']);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 29/11/2010, 11:50
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 5 meses
Puntos: 19
Respuesta: Descargar fichero

Hola abimaelrc,

¡1000000000000000000000000000000000000000000000000 0000000 de gracias! Ahora sí que sale todo perfecto... ¡Te lo agradezco!

Otra pregunta: ¿porqué no está bien con file_get_contents()? Es decir, yo pretendía coger los datos, y luego volcarlos... Pero así no me funcionó.

Gracias de nuevo!
  #8 (permalink)  
Antiguo 29/11/2010, 11:52
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Descargar fichero

Porque file_get_contents es para leer de un archivo no de la base de datos. Si luego quieres leer de un archivo para insertarlos en la base de datos usa file_get_contents entonces.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 30/11/2010, 01:28
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 5 meses
Puntos: 19
Respuesta: Descargar fichero

Ha quedado clarísimo. Si tengo alguna dudilla más, te la preguntaré. Muchas gracias.

Etiquetas: fichero
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 00:04.