Vichuploaderbundle: É possível usar o VichUploader para salvar um arquivo carregado em ação?

Criado em 21 fev. 2013  ·  3Comentários  ·  Fonte: dustin10/VichUploaderBundle

Sei que esse não é o objetivo do VichUploader, mas gostaria que fosse possível, pois o VichUploader é muito bom para processar o campo do arquivo e não apenas no banco de dados, mas também no template!

a situação é que já tenho um arquivo no servidor e desejo que ele possa ser salvo e realocado pelo VichUploader.

Meu código em ação:

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
        }
}

Tento usar o VichUploader para salvar um arquivo carregado sem classe de formulário, mas não funciona do meu jeito.

Eu quero saber se é possível salvar um arquivo enviado com o VichUploader e sem o Form?

Obrigado,

Comentários muito úteis

Thans @Baachi e @ftassi ,

@Baachi você tem razão!
Isso pode ser feito com a classe UploadedFile. este é um hack, mas é simples e eficaz.

a solução viável é

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

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

e tudo é perfeito.

Todos 3 comentários

Isso não vai funcionar (eu acho). Para acionar o processo de upload, você deve ter um UploadedFile vinculado à entidade e, em vez disso, vincular uma instância de File.

@ftassi Existe uma solução.
A classe UploadedFile tem um parâmetro test . Se este parâmetro true , o symfony irá emular um upload de arquivo.

Thans @Baachi e @ftassi ,

@Baachi você tem razão!
Isso pode ser feito com a classe UploadedFile. este é um hack, mas é simples e eficaz.

a solução viável é

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

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

e tudo é perfeito.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

fleskalebas picture fleskalebas  ·  6Comentários

andrea-daru picture andrea-daru  ·  3Comentários

Propscode picture Propscode  ·  4Comentários

Marcelo-Petrucelli picture Marcelo-Petrucelli  ·  3Comentários

gonzalovilaseca picture gonzalovilaseca  ·  7Comentários