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