我知道这不是 VichUploader 的目标,但我希望这是可能的,因为 VichUploader 太好处理文件字段,不仅在数据库中,而且在模板中!
情况是我在服务器中已经有一个文件,我希望它可以被 VichUploader 保存和重新定位。
我的代码在行动:
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
}
}
我尝试使用 VichUploader 来保存没有表单类的上传文件,但它不适合我的方式。
我想知道是否可以使用 VichUploader 而不使用 Form 保存上传的文件?
谢谢,
这行不通(我猜)。 为了触发上传过程,您应该将 UploadedFile 绑定到实体,而您正在绑定一个 File 实例。
@ftassi存在解决方案。
UploadedFile
类有一个test
参数。 如果此参数true
,symfony 将模拟文件上传。
比@Baachi和@ftassi ,
@Baachi你是对的!
它可以通过 UploadedFile 类来完成。 这是一个黑客,但它简单而有效。
可行的解决方案是
$fileThumbnail = new UploadedFile($baseDir.$filename, 'image.jpg', null, null, null, true);
$doc->setFileThumbnail($fileThumbnail);
$em->persist($doc);
$em->flush();
一切都很完美。
最有用的评论
比@Baachi和@ftassi ,
@Baachi你是对的!
它可以通过 UploadedFile 类来完成。 这是一个黑客,但它简单而有效。
可行的解决方案是
一切都很完美。