【问题标题】:Get Uploaded File's Original Name获取上传文件的原始名称
【发布时间】:2013-11-25 20:26:02
【问题描述】:
$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 文件上传器,但我认为这并不重要

【问题讨论】:

    标签: symfony


    【解决方案1】:

    当您上传文件时,您会得到 UploadFile (API link) 对象(基本上是数组的包装器)。

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

    现在无法尝试,但您可能需要这样做:

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

    您可以将name_of_file_field_in_post 替换为表单字段的名称。

    【讨论】:

    • 感谢您的回复,我收到此错误 FatalErrorException:错误:无法使用 Symfony\Component\HttpFoundation\FileBag 类型的对象作为 /pathtofile/MediaBundle/EventListener/UploadListener.php 第 41 行中的数组我的输入是“files[]”
    • 也许这对某人有帮助:文件不是一个数组,它是一个参数包(在这种情况下是 FileBag)。它必须被迭代,比如foreach($request->files as $file),然后你可以做getClientOriginalName()
    【解决方案2】:

    2015 年更新:

    $request->files->get('your-file-name')->getClientOriginalName();
    

    your-file-name 对我来说只是file

    这可能也会有所帮助: https://github.com/1up-lab/OneupUploaderBundle/issues/21

    【讨论】:

    • 正确。谢了哥们。 (y)
    【解决方案3】:

    这对我有用,我猜 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 />
    

    【讨论】:

      【解决方案4】:

      我正在使用 symfony 4,

      我想获取文件的原始名称。对我有用的是:

      $form = $this->createForm(SomeType::class, $object);
      
      if($form->isSubmitted() && $form->isValid()) {
      
          $fileName = $object->getImage()->getClientOriginalName();
      
      }
      

      在我的例子中,getImage() 是文件上传字段名称的获取器。因此,这将更改为文件上传字段的相关 getter 函数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-22
        • 2015-07-06
        • 2015-01-28
        • 1970-01-01
        • 2016-04-27
        • 2020-12-06
        • 2021-05-27
        相关资源
        最近更新 更多