Foros del Web » Programando para Internet » PHP »

recuperación de un campo blob

Estas en el tema de recuperación de un campo blob en el foro de PHP en Foros del Web. Hola amigos. Me han pedido que les haga una prueba de recuperación de ficheros que se suben al servidor. Se barajan estas dos opciones: - ...
  #1 (permalink)  
Antiguo 25/06/2003, 06:04
 
Fecha de Ingreso: abril-2003
Mensajes: 31
Antigüedad: 20 años, 11 meses
Puntos: 0
recuperación de un campo blob

Hola amigos.

Me han pedido que les haga una prueba de recuperación de ficheros que se suben al servidor.

Se barajan estas dos opciones:
- subir el fichero a una tabla de una base de datos MySQL como un campo blob de una tabla.

- Subir al servidor el fichero como un fichero más y guardar en la base de datos la ubicación de este fichero.

Me gustaría saber cual de las dos opciones es más eficiente, teniendo en cuenta que se van a subir ficheros de cualquier tipo (word, pps, demos, etc) y que tampoco va a ser una operación que se repita mucho. Eso sí, el tamaño de algunos de ellos puede superar los 9 Mb.

Otra cosa, a parte de saber cual de las 2 opciones es mejor, me gustaría saber como puedo hacer para que un cliente pueda bajarse un fichero que se ha guardado en un campo blob, porque hasta ahora he conseguido mostrar por pantalla el contenido del fichero, pero no he conseguido bajarlo en la ruta que indica el cliente.

Gracias a todos de antemano.
  #2 (permalink)  
Antiguo 25/06/2003, 06:10
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 2 meses
Puntos: 17
Lo mejor (creo yo) es guardar el fichero en el servidor y referenciar el nombre en la base de datos.

Para recuperar un blob, simplemente muestralo definiendo antes las cabeceras apropiadas.
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 25/06/2003, 06:30
 
Fecha de Ingreso: abril-2003
Mensajes: 31
Antigüedad: 20 años, 11 meses
Puntos: 0
Sonrisa

Gracias por la opinión.

Sobre lo de recuperar el campo, lo que quiero no es visualizarlo por pantalla, sino que el usuario me indique una ruta y guardar el fichero allí.

Hasta luego y gracias
  #4 (permalink)  
Antiguo 25/06/2003, 06:33
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 2 meses
Puntos: 17
Una ruta del servidor, supongo. En ese caso, debes usar algo tipo fopen().

Revísa el manual para otras funciones similares.
__________________
M a l d i t o F r i k i
  #5 (permalink)  
Antiguo 25/06/2003, 06:47
 
Fecha de Ingreso: abril-2003
Mensajes: 31
Antigüedad: 20 años, 11 meses
Puntos: 0
No me acabas de entender, a ver si consigo explicarme bien.

Lo que quiero es que un usuario pueda bajarse el fichero y guardarlo en su disco duro local (o cualquier otro sitio donde él quiera) pero no en el servidor.
Este es el problema, porque si fuera en el servidor la cosa tiene fácil solución. Se abre, se copia todo el contenido y se cierra el fichero. Todo esto hecho con php. Pero como php se ejecuta en el servidor esto no me vale, pues necesito que se copie en el cliente.

Gracias y hasta otra.
  #6 (permalink)  
Antiguo 25/06/2003, 06:53
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Lo que quieres es descargar el contenido del campo, ¿verdad?. Pues es lo que te ha dicho antes Cain, mandar el contenido del campo ("mostrar") al navegador, solo que con las cabeceras adecuadas.

Yo tambien prefiero guardar en la base de datos solo la ruta y guardarlo como un fichero. Opinion personal. Ademas, no se como afecta al rendimiento de las consultas el que haya en un campo blob en una tabla.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 25/06/2003, 08:07
Avatar de epplestun  
Fecha de Ingreso: octubre-2001
Mensajes: 1.621
Antigüedad: 22 años, 4 meses
Puntos: 5
Consejo:

Guardar archivo en sistema de archivos, pero fuera del directorio raiz web, es decir fuera del htdocs/, guardar la ruta donde los guardas y a la hora de descargarlos genear el archivo como te dijeron anteriormente: header("Content-type: tipo"); recuerda que debe ser un tipo valido soportado por el servidor
__________________
Usuario registrado de Linux #288725
  #8 (permalink)  
Antiguo 26/06/2003, 02:41
 
Fecha de Ingreso: abril-2003
Mensajes: 31
Antigüedad: 20 años, 11 meses
Puntos: 0
No entiendo bien lo que me quereis decir.

Mando el contenido del fichero con header("Content type: tipo");

Hasta aquí vale, pero ¿Cómo hago que el cliente lo pueda guardar?

Gracias.
  #9 (permalink)  
Antiguo 26/06/2003, 21:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Si quieres que al "cliente" (navegador) le salga la ventana de "descargar" archivo .. debes de mandarle las cabeceras HTTP adecuadas para que lo entienda como archivo a descargar y no como un posible archivo con formato MIME reconocido que lo interprete .. Todo esto es parte del protocolo HTTP (que puedes verlo si quieres en www.rfc.net por ejemplo)

Fijate en este mensaje:
http://www.forosdelweb.com/showthrea...hreadid=132915

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 18:15.