これが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を使用して、フォームを使用せずに保存できるかどうか知りたいですか?
ありがとう、
これは機能しません(私は推測します)。 アップロードプロセスをトリガーするには、UploadedFileをエンティティにバインドし、代わりにFileインスタンスをバインドする必要があります。
@ftassi解決策があります。
UploadedFile
クラスにはtest
パラメーターがあります。 このパラメーターがtrue
場合、symfonyはファイルのアップロードをエミュレートします。
Thans @Baachiと@ftassi 、
@Baachiあなたは正しいです!
UploadedFileクラスで実行できます。 これはハックですが、シンプルで効果的です。
実行可能な解決策は
$fileThumbnail = new UploadedFile($baseDir.$filename, 'image.jpg', null, null, null, true);
$doc->setFileThumbnail($fileThumbnail);
$em->persist($doc);
$em->flush();
そして、すべてが完璧です。
最も参考になるコメント
Thans @Baachiと@ftassi 、
@Baachiあなたは正しいです!
UploadedFileクラスで実行できます。 これはハックですが、シンプルで効果的です。
実行可能な解決策は
そして、すべてが完璧です。