Upload de imagenes en CakePHP
Primero que nada, quiero decir que no soy un power developer de CakePHP ni de PHP. De hecho medio que casi no me gusta escribir PHP. Con esto dicho, tiro un pequeño snippet que uso en CakePHP para hacer upload de imágenes en cakephp usando un file input en la vista
Para que entiendan mejor, esto es un admin_add de una news. Una news es como un post de blog que tiene titulo, cuerpo y una imagen asociada. En la tabla solo guardo la URL a la imagen que se hizo upload.
Primero, el snippet de la función que hace el upload. Esto lo pongo directamente en el controller como ultimo metodo, junto con los edit, add, admin_add, view, index, whatever.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | function __upload($file_array){ $file = new File($file_array['tmp_name']); $file_base = pathinfo($file_array['name']);; $ext = strtolower($file_base['extension']); if ($ext != 'jpg' && $ext != 'jpeg' && $ext != 'gif' && $ext != 'png') { $this->Session->setFlash('You may only upload image files.'); $this->render(); } else { $data = $file->read(); $file->close(); $full_path = '/upload_images/'.$file_array['name']; $file = new File(WWW_ROOT.$full_path, true); $file->write($data); $file->close(); return $full_path; } return 'Ouch!'; } |
Si usas este ejemplo, las imagenes se guardan en wwwroot/upload_images/
Este snippet funciona con cualquier tipo de archivos, no solo con imagenes. Es cuestión de sacarle el check que hago al tipo de extensión del archivo.
Si querés ver como lo uso, vas a tener que entrar al post..