Как загрузить файл в symfony 4. Я закончил с документом symfony. Не знаю, где я что-то упустил. Выдает ошибку при загрузке файла, дайте мне несколько подсказок
СПРАВОЧНАЯ ССЫЛКА:
https://symfony.com/doc/current/controller/upload_file.html
ОШИБКА:
The file "" does not exist
Юридическое лицо
public function getBrochure()
{
return $this->brochure;
}
public function setBrochure($brochure)
{
$this->brochure = $brochure;
return $this;
}
Слушатель загрузки файлов
class FileUploader
{
private $targetDirectory;
public function __construct($targetDirectory)
{
$this->targetDirectory = $targetDirectory;
}
public function upload(UploadedFile $file)
{
$fileName = md5(uniqid()).'.'.$file->guessExtension();
$file->move($this->getTargetDirectory(), $fileName);
return $fileName;
}
public function getTargetDirectory()
{
return $this->targetDirectory;
}
}
Файл загружается, но отображается эта ошибка .. Файл "/ tmp / phpoblzuA" не существует





Это руководство по Symfony мне подходит, поэтому я постараюсь объяснить, как и, возможно, оно поможет вам или людям, которые все еще ищут ответ, этот пост уже устарел.
Итак, сначала вам нужно создать службу FileUploader в App \ Service для лучшего повторного использования (глава: Создание службы загрузки). Вы можете скопировать / вставить здесь то, что они сделали, это работает как шарм. Затем вам нужно открыть свой services.yaml в папке Config и указать каталог вашей брошюры:
parameters:
brochures_directory: '%kernel.project_dir%/public/uploads/brochures'
# ...
services:
# ...
App\Service\FileUploader:
arguments:
$targetDirectory: '%brochures_directory%'
Теперь все готово для использования службы FileUploader. Итак, если вы находитесь в своем контроллере (например), я думаю, вы хотите использовать его в форме. Таким образом, вам просто нужно сделать это (не забудьте использовать свой Сервис в своем Контроллере):
public function myController(FileUploader $fileUploader)
{
// Create your form and handle it
if ($form isValid() && &form isSubmitted()) {
$file = $myEntity->getBrochure();
$fileName = $this->fileUploader->upload($file);
$myEntity->setBrochure($fileName);
// Form validation and redirection
}
// Render your template
}
Один важный момент, который я забыл сказать. В вашем FormType вам нужно указать, что Brochure будет FileType:
$builder->add('brochure', FileType::class)
Но в вашем объекте вы должны указать, что ваша брошюра хранится в виде «строки»:
/**
* @MongoDB\Field(type = "string")
*/
protected $brochure;
Причина в том, что ваш файл загружается и сохраняется в вашей общедоступной / uploads / брошюре. Но ваша база данных запоминает только строковый путь, чтобы добраться до нее.
Я надеюсь, это поможет!
Я получаю ошибку в этой строке $ fileName = md5 (uniqid ()). '.'. $ File-> guessExtension ();