Vichuploaderbundle: ¿Es posible usar VichUploader para guardar un archivo cargado en acción?

Creado en 21 feb. 2013  ·  3Comentarios  ·  Fuente: dustin10/VichUploaderBundle

Sé que este no es el objetivo de VichUploader, pero desearía que fuera posible, porque VichUploader es demasiado bueno para procesar el campo del archivo y no solo en la base de datos, ¡sino también en la plantilla!

la situación es que ya tengo un archivo en el servidor y deseo que VichUploader pueda guardarlo y reubicarlo.

Mi código en acción:

use Symfony\Component\HttpFoundation\File\File;
......
class documentController extends Controller {
......
        public function updateAction(Request $request){
                ......
                $form = $this->createForm(new DocumentType(), $doc);  
                ........
                if ($form->isValid()) {
                        $baseDir = $this->get('kernel')->getRootDir() . "/../web/uploads";  

                        $fileThumbnail = new File($baseDir."/image.jpg");  

                        $doc->setImgThumbnail($fileThumbnail->getFilename());

                        $sm = $this->get('vich_uploader.storage');
                        $sm->upload($doc);

                        $em->persist($doc);
                        $em->flush();
                        .......
                } //eof if
        }
}

Intento usar VichUploader para guardar un archivo cargado sin clase de formulario, pero no funciona a mi manera.

Quiero saber si es posible guardar un archivo cargado con VichUploader y sin Form.

Gracias,

Comentario más útil

Gracias @Baachi y @ftassi ,

@Baachi ¡ tienes razón!
Se puede hacer con la clase UploadedFile. esto es un truco, pero es simple y efectivo.

la solución viable es

$fileThumbnail = new UploadedFile($baseDir.$filename, 'image.jpg', null, null, null, true);
$doc->setFileThumbnail($fileThumbnail);

$em->persist($doc);
$em->flush();

y todo es perfecto.

Todos 3 comentarios

Esto no funcionará (supongo). Para activar el proceso de carga, debe tener un UploadedFile vinculado a la entidad y, en su lugar, está vinculando una instancia de File.

@ftassi Existe una solución.
La clase UploadedFile tiene un parámetro test . Si este parámetro true , Symfony emulará la carga de un archivo.

Gracias @Baachi y @ftassi ,

@Baachi ¡ tienes razón!
Se puede hacer con la clase UploadedFile. esto es un truco, pero es simple y efectivo.

la solución viable es

$fileThumbnail = new UploadedFile($baseDir.$filename, 'image.jpg', null, null, null, true);
$doc->setFileThumbnail($fileThumbnail);

$em->persist($doc);
$em->flush();

y todo es perfecto.

¿Fue útil esta página
0 / 5 - 0 calificaciones