Yii Framework Forum: ¿Cómo descargar un archivo que se encuentra en la base de datos? - Yii Framework Forum

Jump to content

  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

¿Cómo descargar un archivo que se encuentra en la base de datos? Descargar un archivo con un enlace desde una vista Rate Topic: -----

#21 User is offline   Eduardo Méndez 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 34
  • Joined: 29-June 12

Posted 17 July 2012 - 11:13 AM

View Postrobregonm, on 17 July 2012 - 10:03 AM, said:

Ahora que hablan de cargar archivo completos en una tabla de la base de datos, lo cual no está mal, pero por rendimiento, se prefiere guardarlos en el sistema de archivos, es decir, en el disco duro, de modo que en la base de datos se guarda la ruta o un identificador para localizarlo.
De todas formas, si es absolutamente necesario almacenarlos en la Base de Datos, entonces, es buena idea guardar información relacionada, con el fin de indexarlos e identificarlos más fácilmente: Fecha Creación, Fecha de subida, Tamaño, Tipo MIME de archivo (la extensión no siempre dice realmente el tipo MIME).... y cosas así.

Saludos y éxitos.


Hola!... ¿y sabes cómo hacerlo de esa manera? porque me interesa aprender las dos formas...
0

#22 User is offline   JCS 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 57
  • Joined: 10-January 11
  • Location:Bogotá

Posted 17 July 2012 - 12:12 PM

Bueno, acá un ejemplo de como puedes subir los archivos para guardarlos en la base de datos y una acción para descargarlos.
El ejemplo no está muy elaborado pero hace lo que necesitas así que solo debes adaptarlo a tus necesidades.

Attached File(s)


0

#23 User is offline   robregonm 

  • Experienced Yii Developer
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 602
  • Joined: 30-July 09
  • Location:Colombia

Posted 18 July 2012 - 10:47 AM

De acuerdo con JCS,
Básicamente lo que se hace es mover el archivo a un directorio "propio" de la aplicación y se le da un nombre ÚNICO (normalmente un MD5 o SHA del Nombre+NúmeroAleatorio), y en la base de datos se almacena el nombre, de forma que sea fácilmente localizable, y datos complementarios.

Saludos.
Ricardo Obregón
LinkedIn Profile
YiiFramework en Español - http://yiiframework.co/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx, MySQL, PostgreSQL, Yii 1.x & 2.x, CanJS and more.
Follow me: @robregonm & @obregonco & @1ServerCo.
0

#24 User is offline   JCS 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 57
  • Joined: 10-January 11
  • Location:Bogotá

Posted 18 July 2012 - 11:54 AM

View Postrobregonm, on 18 July 2012 - 10:47 AM, said:

De acuerdo con JCS,
Básicamente lo que se hace es mover el archivo a un directorio "propio" de la aplicación y se le da un nombre ÚNICO (normalmente un MD5 o SHA del Nombre+NúmeroAleatorio), y en la base de datos se almacena el nombre, de forma que sea fácilmente localizable, y datos complementarios.

Saludos.


no, mi ejemplo es para subir los archivos a la base de datos ^^, yo siempre uso el sistema de archivos pero pues cada quien tiene sus propias necesidades y si el requerimiento es guardar los archivos en la base de datos pues hay que solucionarlo.

de nuevo si no es obligatorio que el archivo este en la base de datos, hay una extension que hace bastante facil trabajar con archivos.

http://www.yiiframew...magearbehavior/
0

#25 User is offline   Eduardo Méndez 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 34
  • Joined: 29-June 12

Posted 18 July 2012 - 01:29 PM

JCS hermano, muchas gracias!!! de verdad me fue muy útil toda la información que me diste desde el primer momento. He resuelto y más que eso comprendido muchas cosas de este framework y de php en general...
0

#26 User is offline   JCS 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 57
  • Joined: 10-January 11
  • Location:Bogotá

Posted 18 July 2012 - 08:30 PM

View Postemendez, on 18 July 2012 - 01:29 PM, said:

JCS hermano, muchas gracias!!! de verdad me fue muy útil toda la información que me diste desde el primer momento. He resuelto y más que eso comprendido muchas cosas de este framework y de php en general...


pues que bueno que he podido ayudar, si necesitas algo nada mas publica y alguien con seguridad te ayudara a resolver tus dudas
0

#27 User is offline   robregonm 

  • Experienced Yii Developer
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 602
  • Joined: 30-July 09
  • Location:Colombia

Posted 19 July 2012 - 09:46 AM

Cabe mencionar que hemos creado un nuevo foro en español con varias temáticas en donde podemos hacer las preguntas a la comunidad en español:
http://www.yiiframew...panol.org/foro/

Además, está en desarrollo el sitio web en español, aunque por ahora lo único funcional es el foro.
Saludos.
Ricardo Obregón
LinkedIn Profile
YiiFramework en Español - http://yiiframework.co/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx, MySQL, PostgreSQL, Yii 1.x & 2.x, CanJS and more.
Follow me: @robregonm & @obregonco & @1ServerCo.
0

#28 User is offline   bluyell 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 222
  • Joined: 28-October 11

Posted 19 July 2012 - 10:09 AM

Hola, hay dos maneras bien sencillas de hacerlo, ya te las han puesto aca, ahora, las resumo asi:

	public function actionDescargarArchivo($idArchivo){
             $contenidoDelArchivo = [...algo que hagas para obtener los datos del archivo...];

            // si el contenido es una imagen o un texto, pones aqui el tipo MIME de tu contenido:
            header('Content-type: image/png');

           // si el contenido es un archivo para que se descargue cuando lo solicitan, es decir que aparezca una caja "descargando archivo...progreso...60%"
           $filename ='nombreDeseado.algo';
           header('Content-Disposition: attachment; filename="'.$filename.'"');

           // opcionalmente puedes agregar este encabezado sin son archivos binarios y no solo ascii.
          header("Content-Transfer-Encoding: binary");

            // esto es lo que causa el envio del archivo hacia el browser
            echo $contenidoDelArchivo;
       }





0

#29 User is offline   Eduardo Méndez 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 34
  • Joined: 29-June 12

Posted 14 November 2012 - 08:46 AM

View PostJCS, on 17 July 2012 - 12:12 PM, said:

Bueno, acá un ejemplo de como puedes subir los archivos para guardarlos en la base de datos y una acción para descargarlos.
El ejemplo no está muy elaborado pero hace lo que necesitas así que solo debes adaptarlo a tus necesidades.



Hola buen día! ¿cómo estas?... ¿será que este ejemplo también funciona para postgresql?
0

#30 User is offline   robregonm 

  • Experienced Yii Developer
  • PipPipPipPip
  • Yii
  • Group: Members
  • Posts: 602
  • Joined: 30-July 09
  • Location:Colombia

Posted 14 November 2012 - 01:04 PM

Sí señor, es "DB-aware", es decir, independiente de cualquier motor de base de datos.

Saludos
Ricardo Obregón
LinkedIn Profile
YiiFramework en Español - http://yiiframework.co/ - Yii Code Generator for Bootstrap
http://obregon.co/ - https://1server.co/
PHP 5.5+, nginx, MySQL, PostgreSQL, Yii 1.x & 2.x, CanJS and more.
Follow me: @robregonm & @obregonco & @1ServerCo.
0

Share this topic:


  • (2 Pages)
  • +
  • 1
  • 2
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users