Файл "" не существует (VichUploaderBundle)

Моя проблема в том, что когда я пытаюсь загрузить mp3-файл с помощью VichUploadBundler в сочетании с sonata-admin, я получаю следующую ошибку при загрузке файла.

"The file "" was not found"

У меня уже есть другая форма в моем проекте, куда я загружаю некоторые изображения, и у меня нет проблем с ними, поэтому я в шоке, потому что я думал, что аудиофайлы будут проще

Вот мой файл Entity

/**
* NOTE: This is not a mapped field of entity metadata, just a simple property.
*
* @Vich\UploadableField(mapping = "episode_audio", fileNameProperty = "audioName")
*
* @var File
*/
private $audioFile;

/**
* @ORM\Column(type = "string", length=255)
*
* @var string
*/
private $audioName;

/**
* @ORM\Column(type = "datetime")
*
* @var \DateTime
*/
private $updatedAt;

/**
* If manually uploading a file (i.e. not using Symfony Form) ensure an instance
* of 'UploadedFile' is injected into this setter to trigger the update. If this
* bundle's configuration parameter 'inject_on_load' is set to 'true' this setter
* must be able to accept an instance of 'File' as the bundle will inject one here
* during Doctrine hydration.
*
* @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $audioFile
*/
public function setAudioFile(?File $audioFile = null): void
{
   $this->audioFile = $audioFile;
   if (null !== $audioFile) {
       // It is required that at least one field changes if you are using doctrine
       // otherwise the event listeners won't be called and the file is lost
       $this->updatedAt = new \DateTimeImmutable();
   }
 }

public function getAudioFile(): ?File
{
   return $this->audioFile;
}

public function setAudioName(?string $audioName): void
{
    $this->audioName = $audioName;
}

public function getAudioName(): ?string
{
    return $this->audioName;
}

Мой файл vich_uploader.yaml

vich_uploader:
    db_driver: orm

    mappings:
        ..//

        episode_audio:
            uri_prefix: /audio
            upload_destination: '%kernel.project_dir%/public/audio/'
            delete_on_update: true
            delete_on_remove: true
            inject_on_load: true

И, наконец, мой класс администратора

    protected function configureFormFields(FormMapper $formMapper) {
    $formMapper
      ->add('audioName')
      ->add('audioFile', VichFileType::class, [
        'label' => 'Audio'
      ]);
    }

Я просто хочу иметь возможность видеть мои аудиофайлы в моей папке, как и изображения, я уверен, что это что-то глупое, если вам, ребята, нужно увидеть что-то еще в моем коде, просто спросите, чтобы я мог обновить вопрос

У вас есть блок документации * @ApiResource() в верхней части файла?

Lulceltech 16.04.2019 22:49

Извините за невежество, что такое @ApiResource? В любом случае я не использовал его для изображений, и он работал нормально. плюс я не использую API

Benjamin Gil 16.04.2019 23:00

Я думаю, что updatedAt отсутствует

laviku 17.04.2019 12:14

Я только что добавил это поле в свою сущность, и все же оно дает мне ту же ошибку, это должно быть что-то еще

Benjamin Gil 17.04.2019 15:25
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
650
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мне пришлось изменить некоторые вещи, чтобы решить мою проблему

Прежде всего, я добавил новое свойство в сущность под названием «$audioSize», например:

 /**
 * @ORM\Column(type = "integer")
 *
 * @var integer
 */
private $audioSize;

//getters and setters ...

Мне также пришлось изменить свойство audioFile, например...

/**
* NOTE: This is not a mapped field of entity metadata, just a simple property.
*
* @Assert\File(
*     maxSize = "1024M",
*     mimeTypes = {"audio/mpeg", "audio/mp3"}
* )
* @Vich\UploadableField(mapping = "episode_audio", fileNameProperty = "audioName", size = "audioSize")
*
* @var File $audioFile
*/
private $audioFile;

и, наконец, в файле php.ini проекта мне пришлось изменить максимальный размер загрузки файлов

post_max_size = 1024M
upload_max_filesize = 1024M

Я оставлю это здесь для дальнейшего использования, если кто-то еще столкнется с той же проблемой.

p.d Отдельное спасибо @Iaviku, который подсказал мне добавить те поля, которые в итоге решили мою проблему.

Другие вопросы по теме