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