Vichuploaderbundle: Можно ли использовать VichUploader для сохранения загруженного файла в Action?

Созданный на 21 февр. 2013  ·  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 и без формы?

Спасибо,

Самый полезный комментарий

Танс @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 будет эмулировать загрузку файла.

Танс @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 рейтинги