Subir una imagen y ponerla en un campo Blob

472 views
Skip to first unread message

Pablo Z - Medaneros

unread,
Mar 27, 2012, 11:05:30 AM3/27/12
to cakep...@googlegroups.com
Amigos

Sigo con el desarrollo.... ahora quiero subir la imagen y ponerla en un
campo Blob.
Ya prob� con varios plugins para upload pero no los logro hacer andar.
Tengo que ver por el lado de jQuery?

Saludos
Pablo Z

Pablo Z - Medaneros

unread,
Mar 27, 2012, 11:07:37 AM3/27/12
to cakep...@googlegroups.com

jairo jose rodriguez feliz

unread,
Mar 27, 2012, 11:56:36 AM3/27/12
to CakePHP en Español

que es lo que quieres hacer, subir una imagen a una carpeta y guardar
el nombre en la bd????

Pablo Z - Medaneros

unread,
Mar 27, 2012, 12:15:25 PM3/27/12
to cakep...@googlegroups.com
Lo que quiero hacer es subir una imagen y ponerla en el campo BLOB,
supongo que hay que subirla en una carpeta y despu�s insertarla en el
campo... no?
C�mo ser�a? cualquier ejemplo me sirve.
Estoy usando CakePHP 2.1 y tengo que adaptar cada ejemplo que veo, es
todo para 1.3

Saludos
Pablo Z

El 27/03/2012 12:56, jairo jose rodriguez feliz escribi�:

jairo jose rodriguez feliz

unread,
Mar 27, 2012, 12:21:50 PM3/27/12
to CakePHP en Español
http://book.cakephp.org/1.3/es/view/1411/File-Fields

yo lo hago de esta manera no se los demas:

1. en el controlador crear la accion de subir la imagen,
me imagino si estas utilizando cakephp es porque tienes conocimientos
avanzados o intermedio de php.

2. validar si la imagen esta dentro de los parametros de tus
extensiones.

3. renombrar la imagen (opcional)

4. guardar nombre en la base de datos

5. moverla a la carpeta que desees.

Geneller Naranjo

unread,
Mar 27, 2012, 1:11:29 PM3/27/12
to cakep...@googlegroups.com
Yo hago algo similar, una vez pensé hacer algo como lo que planteas de subir la imagen y guardarla en la DB pero no recuerdo cual fue el argumento para guardarla en una carpeta en el server,

No es una mala practica la que te propone Jairo.

Saludos.

2012/3/27 jairo jose rodriguez feliz <jrodmas...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP en Español" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-esp...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/cakephp-esp?hl=es.




--
Cordialmente.
Geneller Naranjo Alzate.

Pablo Z - Medaneros

unread,
Mar 27, 2012, 1:22:02 PM3/27/12
to cakep...@googlegroups.com
Ok....
Puse un campo file en el view:
echo $this->Form->create('Persona',array('enctype'=>'multipart/form-data'));?>
echo $this->Form->hidden('id');
echo $this->Form->input('nombre');
echo $this->Form->file('foto', array('Image/images'=>'Image:'));
echo $this->Form->end('Ok');
y me entrega estos datos cuando quiero grabarlos:
array
  'Persona' => 
    array
      'id' => string '1116' (length=4)
      'nombre' => string 'Pablo' (length=7)
      'foto' => 
        array
          'name' => string '_DSC00619__.png' (length=15)
          'type' => string 'image/png' (length=9)
          'tmp_name' => string 'C:\wamp\tmp\php1D87.tmp' (length=23)
          'error' => int 0
          'size' => int 328364
Ahora tengo que ver antes de hacer el post, procesar el 'tmp_name' y ponerlo en $this->request->data['Persona']['foto']... no?

Saludos
Pablo Z

jairo jose rodriguez feliz

unread,
Mar 27, 2012, 2:46:34 PM3/27/12
to CakePHP en Español
ahora mismo estoy en el trabajo. cuando llegue a la casa te paso los
codigos de la vista y el controlador, para que
te guies... ahora mismo no los tengo arriba, pero yo lo he hecho ya
muchas veces eso de subida de imagenes a una web.

estube leyendo acerca de un pluging para ese tipo de cosas y me
desencante porque nadie explicaba nada claro y decidi hacerlo
por mi proia cuenta.... tambien la parte de las descargas de ficheros
e imagenes, tube que leer muchisimo para poder hacer...


pero nada aqui estamos para ayudarno los unos a los otros desde que
llegue a la casa te pongo el codigo aqui para que lo veas.

Pablo Z - Medaneros

unread,
Mar 27, 2012, 2:55:38 PM3/27/12
to cakep...@googlegroups.com
Que genio!
Mil gracias por la buena onda
Te cuento lo que hice y funciona....

public function edit($id=null) {
if (empty($this->request->data)) {
$this->request->data = $this->Persona->findById($id);
}
else {
$name = $this->request->data['Persona']['foto']['tmp_name'];
$size = $this->request->data['Persona']['foto']['size'];
$fh = fopen( $name, 'r' );
$this->request->data['Persona']['foto'] = fread( $fh, $size );
fclose( $fh );
if ($this->Persona->save($this->data)) {

Eso si... no puedo hacerle resize ni procesarla... vi componentes que
usan jQuery pero no los pude hacer andar

Saludos
Z

El 27/03/2012 15:46, jairo jose rodriguez feliz escribi�:

romel javier gomez herrera

unread,
Mar 28, 2012, 9:46:24 PM3/28/12
to cakep...@googlegroups.com
hola, este es un tutorial que escribí hace tiempo basado en un componente. que de por si el componente esta bien documentado pero en ingles lo cual no creo que sea un problema.  

el tutorial esta un poco desactualizado, el componente es super solido y no tengo los problemas que comente en el tutorial.  

en aquel momento investigue las de ventajas guardar una imagen en la base de datos vs una carpeta, y recuerdo que guardar la imagen en la base de datos no es una buena idea. 

googleando aquí tienes unas de las razones: 

1.- es mucho mas facil guardar, borrar y leer una imagen guardada en disco q de una BBDD
2.- la base de datos es mucho mas liviana por ende trabaja mas rapido
3.- a la hora de hacer un backup de la BBDD se hace en poco tiempo y luego haces un backup de las imagenes y ya 



El 27 de marzo de 2012 14:25, Pablo Z - Medaneros <meda...@gmail.com> escribió:
Que genio!
Mil gracias por la buena onda
Te cuento lo que hice y funciona....

   public function edit($id=null) {
       if (empty($this->request->data)) {
           $this->request->data = $this->Persona->findById($id);
       }
       else {
           $name = $this->request->data['Persona']['foto']['tmp_name'];
           $size = $this->request->data['Persona']['foto']['size'];
           $fh = fopen( $name, 'r' );
           $this->request->data['Persona']['foto'] = fread( $fh, $size );
           fclose( $fh );
           if ($this->Persona->save($this->data)) {

Eso si... no puedo hacerle resize ni procesarla... vi componentes que usan jQuery pero no los pude hacer andar

Saludos
Z

El 27/03/2012 15:46, jairo jose rodriguez feliz escribió:

ahora mismo estoy en el trabajo. cuando llegue a la casa te paso los
codigos de la vista y el controlador, para que
te guies... ahora mismo no los tengo arriba, pero yo lo he hecho ya
muchas veces eso de subida de imagenes a una web.

estube leyendo acerca de un pluging para ese tipo de cosas y me
desencante porque nadie explicaba nada claro y decidi hacerlo
por mi proia cuenta.... tambien la parte de las descargas de ficheros
e imagenes, tube que leer muchisimo para poder hacer...


pero nada aqui estamos para ayudarno los unos a los otros desde que
llegue a la casa te pongo el codigo aqui para que lo veas.


--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP en Español" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-esp+unsubscribe@googlegroups.com
Subir imagenes con cakephp y upload component (1).pdf

romel javier gomez herrera

unread,
Mar 28, 2012, 9:47:46 PM3/28/12
to cakep...@googlegroups.com
con ese componente el resize es pan comido. saludos

Pablo Z - Medaneros

unread,
Mar 28, 2012, 10:43:29 PM3/28/12
to cakep...@googlegroups.com
Genio! mañana lo miro y te cuento.
Si, te entiendo lo de no guardar la imagen en la DB, pero mi problema es que mi DB también es consultada por un WebService, y necesita armar una respuesta con todos los campos del registro, entre ellos la imágen. Después veré cómo solucionarlo...

Gracias!!!
Z
Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-esp...@googlegroups.com

Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/cakephp-esp?hl=es.

--
Has recibido este mensaje porque estás suscrito al grupo "CakePHP en Español" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a cakep...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a cakephp-esp...@googlegroups.com

Ricardo Mun~oz A.

unread,
Mar 29, 2012, 8:59:03 AM3/29/12
to cakep...@googlegroups.com
On Wed, Mar 28, 2012 at 11:43 PM, Pablo Z - Medaneros
<meda...@gmail.com> wrote:
> Genio! mañana lo miro y te cuento.
> Si, te entiendo lo de no guardar la imagen en la DB, pero mi problema es que
> mi DB también es consultada por un WebService, y necesita armar una
> respuesta con todos los campos del registro, entre ellos la imágen. Después
> veré cómo solucionarlo...

podrias usar base64_encode() para codificar el BLOB de la imagen en un
string, el cual luego puede ser decodificado por el cliente del
WebService, recuerdo haberlo hecho con archivos Word pero funciona con
cualquier archivo binario. de hecho, es lo que se usa al enviar
archivos atachados en un mail ;-)

http://en.wikipedia.org/wiki/Base64

--
Ricardo Mun~oz A.
http://pobrezuko.info

Reply all
Reply to author
Forward
0 new messages