Subir ficheros en Symfony2

En el post anterior hemos visto como crear el formulario de añadir posts, sin embargo no funciona la subida de la imágen. En este artículo veremos como subir ficheros en Symfony2.

Es sencillo, simplemente en nuestro formulario definimos un campo tipo file y en la entidad añadimos los siguientes métodos.

//SUBIDAS
    public function getAbsolutePath() {
        return null === $this->image ? null : $this->getUploadRootDir() . '/' . $this->image;
    }

    public function getWebPath() {
        return null === $this->image ? null : $this->getUploadDir() . '/' . $this->image;
    }

    public function getUploadRootDir() {
        return __DIR__ . '/../../../../web/' . $this->getUploadDir();
    }

    protected function getUploadDir() {
        return 'uploads';
    }

    public function upload() {
        
        if (null === $this->getImage()) {
            return;
        }

        $this->getImage()->move(
                $this->getUploadRootDir(), $this->getImage()->getClientOriginalName()
        );

        $this->image = $this->getImage()->getClientOriginalName();

        $this->file = null;
    }

    public function removeUpload()
    {
        if ($file = $this->getAbsolutePath()) {
            unlink($file);
        }
    }

Con estos métodos Symfony2 se encargará de guardar la imagen en el directorio web/uploads como le hemos indicado. El solo hará la magia, solamente tendremos que llamar al método upload antes de el persist de la entidad.

Víctor Robles WEB

Autor: Victor

Desarrollador web - Formador online - Blogger

Compartir este post

2 Comentarios

  1. hola víctor, tu blog me ha parecido genial , pero a ver si me podes ayudar en esto, estoy realizando un directorio web, la idea es q salga cada usuario con su foto y télefono, he intentado de mil formas y no me sube la foto, en la plantilla twig como le hago, uso sf2, gracias de antemano

    Responder
    • Tengo unos ejemplos de como realizar un blog desde cero con Symfony2 en los que a lo mejor te puedes inspirar. Un saludo.

      Responder

Poner un comentario

Tu dirección de correo electrónico no será publicada.