如何在没有表单的情况下获取文件上传

Posted

技术标签:

【中文标题】如何在没有表单的情况下获取文件上传【英文标题】:How to get file upload without a form 【发布时间】:2013-08-26 08:25:09 【问题描述】:

我的控制器接收到发布数据。它不是来自 Symfony 生成的表单,而是来自使用 FormData 的 AngularJS 自定义表单。

请求参数包中正常接收正常参数,但是如何获取上传的文件?我是否需要手动执行与表单的 handleRequest 相同的操作?

我的文档和cookbook article一样。

所以我需要从 post 请求中获取一个 UploadFile 以在文档实体上调用此方法:

public function setFile(UploadedFile $file = null)

如何在 Symfony 2 中手动接收上传(不以任何方式使用表单构建器)?

【问题讨论】:

【参考方案1】:

Request 有一个 FileBag,类似于 ParameterBag

所以我可以很容易地得到指定的文件:

$data = $this->getRequest()->request->all();
$file = $this->getRequest()->files->get('file');

并按原样使用食谱中的文档:

$document = new Document();
$document->setFile($file);
$lead->setDocument($document);

【讨论】:

如何设置文件包的内容?我正在使用https://github.com/kriswallsmith/Buzz/blob/master/lib/Buzz/Browser.php,我必须发送一个带有文件包集的 POST 请求。我的代码中有 fileObj。我用is_file() 方法验证了它。 你也能回答我的问题吗?我面临同样的问题,这是我的问题。 ***.com/q/44352796/1395965 $this->getRequest() 似乎在 2.4 中已被弃用,并在 3.0 中被删除。 $request->files->get('filename') 为我工作 同时检查 PHP 是否接受文件。这里有一些 php.ini 指令 php.net/manual/en/ini.core.php#ini.sect.file-uploads 例如必须设置为 on 的 file_uploadsupload_max_filesize 等等。

以上是关于如何在没有表单的情况下获取文件上传的主要内容,如果未能解决你的问题,请参考以下文章

如何在上传之前获取文件名并在没有 fakepath 的情况下传递到另一个文本输入字段

如何在不更改页面的情况下上传文件

在没有activexobject的情况下获取上传文件的大小?

在没有 AJAX 的情况下获取文件上传状态

Django可以在没有FORMS的情况下上传文件吗?

如何在节点js中使用单个api保存文本字段值以及文件上传?