Ich weiß, dass dies nicht das Ziel von VichUploader ist, aber ich wünschte, es wäre möglich, denn VichUploader ist zu gut, um Dateifelder zu verarbeiten, und zwar nicht nur in der Datenbank, sondern auch in der Vorlage!
Die Situation ist, dass ich bereits eine Datei auf dem Server habe und ich wünsche, dass sie von VichUploader gespeichert und verschoben werden kann.
Mein Code in Aktion:
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
}
}
Ich versuche, VichUploader zu verwenden, um eine hochgeladene Datei ohne Formularklasse zu speichern, aber es funktioniert nicht auf meine Art.
Ich möchte wissen, ob es möglich ist, eine hochgeladene Datei mit VichUploader und ohne Formular zu speichern?
Danke,
Das wird nicht funktionieren (glaube ich). Um den Upload-Prozess auszulösen, sollten Sie eine UploadedFile an die Entität gebunden haben und stattdessen eine File-Instanz binden.
@ftassi Eine Lösung existiert.
Die Klasse UploadedFile
hat einen Parameter test
. Wenn dieser Parameter true
, emuliert symfony einen Datei-Upload.
Danke @Baachi und @ftassi ,
@Baachi du hast recht!
Dies kann mit der UploadedFile-Klasse erfolgen. Dies ist ein Hack, aber es ist einfach und effektiv.
die praktikable lösung ist
$fileThumbnail = new UploadedFile($baseDir.$filename, 'image.jpg', null, null, null, true);
$doc->setFileThumbnail($fileThumbnail);
$em->persist($doc);
$em->flush();
und alles ist perfekt.
Hilfreichster Kommentar
Danke @Baachi und @ftassi ,
@Baachi du hast recht!
Dies kann mit der UploadedFile-Klasse erfolgen. Dies ist ein Hack, aber es ist einfach und effektiv.
die praktikable lösung ist
und alles ist perfekt.