Vichuploaderbundle: アップロードされたファイルをアクションで保存するためにVichUploaderを使用することは可能ですか?

作成日 2013年02月21日  ·  3コメント  ·  ソース: dustin10/VichUploaderBundle

これが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を使用して、フォームを使用せずに保存できるかどうか知りたいですか?

ありがとう、

最も参考になるコメント

Thans @Baachi@ftassi

@Baachiあなたは正しいです!
UploadedFileクラスで実行できます。 これはハックですが、シンプルで効果的です。

実行可能な解決策は

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

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

そして、すべてが完璧です。

全てのコメント3件

これは機能しません(私は推測します)。 アップロードプロセスをトリガーするには、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();

そして、すべてが完璧です。

このページは役に立ちましたか?
0 / 5 - 0 評価