Symfony2文件上传获取原始文件名

Posted

技术标签:

【中文标题】Symfony2文件上传获取原始文件名【英文标题】:Symfony2 file upload get original file name 【发布时间】:2015-07-04 00:27:22 【问题描述】:

我无法在文件上传期间检索 originalName。

print_r($request->file) 返回以下内容:

Symfony\Component\HttpFoundation\FileBag Object
(
    [parameters:protected] => Array
        (
            [form_name] => Array
                (
                    [backgroundImageFile] => Symfony\Component\HttpFoundation\File\UploadedFile Object
                        (
                            [test:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 
                            [originalName:Symfony\Component\HttpFoundation\File\UploadedFile:private] => bg_image.jpg
                            [mimeType:Symfony\Component\HttpFoundation\File\UploadedFile:private] => image/jpeg
                            [size:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 65045
                            [error:Symfony\Component\HttpFoundation\File\UploadedFile:private] => 0
                            [pathName:SplFileInfo:private] => /tmp/phpsU3X7a
                            [fileName:SplFileInfo:private] => phpsU3X7a
                        )

                )

        )

)


echo "<br /> Name= ".$this->getRequest()->files['backgroundImageFile']->getClientOriginalName();

返回:

致命错误:调用成员函数 getClientOriginalName() ../控制器路径中的非对象

那么,我如何获得 OriginalName?

【问题讨论】:

【参考方案1】:

尝试在 FileBag 上使用 get() 方法,而不是数组访问。

例如,

$this->getRequest()->files->get("backgroundImageFile")->getClientOriginalName();

或者,如果在您的场景中有意义,请使用表单上传,然后将上传的文件作为表单数据访问。

【讨论】:

我仍然收到致命错误:调用控制器的 ../path 中的非对象上的成员函数 getClientOriginalName()。我只需要在提交表单之前获取原始文件名 @kewpe20 在提交表单之前,不会上传文件。上传发生在表单提交时,所以在此之前没有什么可以命名的。 如果你能把你的代码放在某个地方让我看一下,我会看看你的具体实例发生了什么。

以上是关于Symfony2文件上传获取原始文件名的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 symfony2“手动”处理文件上传?

Symfony2 限制最终用户仅上传 csv 文件

使用 ajax 和 Symfony2 上传文件

上传视频文件成功后$_FILES['name']的值为啥是blob?而不是原始文件名?怎么才能获取到原始文件名?

获取上传文件的原始名称

Rails 6 - Shrine - ImageProcessing - 获取原始上传文件