Имя загруженного файла

$request = $event->getRequest();
print_r($request->files);die;

дает мне

Symfony\Component\HttpFoundation\FileBag Object
(
    [parameters:protected] => Array
        (
            [files] => Array
                (
                    [0] => Symfony\Component\HttpFoundation\File\UploadedFile Object
                        (
                            [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
                            [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => Chrysanthemum.jpg
                            [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
                            [size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 879394
                            [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
                            [pathName:SplFileInfo:private] => /tmp/phpmUl54W
                            [fileName:SplFileInfo:private] => phpmUl54W
                        )

                )

        )

)

Я пытаюсь получить значение для "originalname", то есть "Chrysanthemum.jpg", не прибегая к циклу, но я не могу найти правильный синтаксис

Использование загрузчика файлов 1UP, но я не думаю, что важно

Ответ 1

Это заработало для меня, я думаю, что класс OneUp обрабатывает его несколько иначе

use Oneup\UploaderBundle\Event\PostPersistEvent;
class UploadListener
{
     public function onUpload(PostPersistEvent $event)
    {

        $request = $event->getRequest();
        $original_filename = $request->files->get('blueimp')->getClientOriginalName();
     }
}

Соответствующий фронтэнд

<input id="fileupload" type="file" name="blueimp" data-url="{{ oneup_uploader_endpoint('images') }}" multiple />

Ответ 2

Когда вы загружаете файлы, вы получаете UploadFile (API link) (в основном обертки массива).

$this->getRequest()->files[0]->getClientOriginalName();

Не могу попробовать это сейчас, но вам может понадобиться сделать это вместо этого:

$this->getRequest()->files['name_of_file_field_in_post']->getClientOriginalName();

где вы замените name_of_file_field_in_post своим именем поля формы.

Ответ 4

Я использую symfony 4,

Я хотел получить исходное имя файла. Что для меня работало:

$form = $this->createForm(SomeType::class, $object);

if($form->isSubmitted() && $form->isValid()) {

    $fileName = $object->getImage()->getClientOriginalName();

}

В моем случае getImage() является получателем для имени поля для загрузки файла. Таким образом, это изменится на вашу соответствующую функцию getter для поля загрузки файла.