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,
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.
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 é
e tudo é perfeito.