获取上传文件的原始名称
Posted
技术标签:
【中文标题】获取上传文件的原始名称【英文标题】: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 文件上传器,但我认为这并不重要
【问题讨论】:
【参考方案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 函数。
【讨论】:
以上是关于获取上传文件的原始名称的主要内容,如果未能解决你的问题,请参考以下文章
上传视频文件成功后$_FILES['name']的值为啥是blob?而不是原始文件名?怎么才能获取到原始文件名?