我需要使用Postman chrome扩展程序创建的POST请求检索我发送到ZF2 rest应用程序的两个文件的内容。我在邮递员的表单数据对话框中指定了两个文件,这些文件在请求中编码如下(请求预览):
...
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="blackbox-data"; filename="blackbox-data.txt"
Content-Type: text/plain
----WebKitFormBoundaryE19zNvXGzXaLvS5C
Content-Disposition: form-data; name="assessment-configuration"; filename="assessment-configuration.xml"
Content-Type: text/xml
...
我已经扩展了ZF2 AbstractRestfulController来处理休息请求,这很好。如何获取MyRestController::create()
内发送的两个文件的文件内容?
我尝试过以下操作,但我得到的只是空数组,空字符串:
$meta = $this->request->getMetadata();
$content = $this->request->getContent();
$blackboxData = $this->request->getPost('blackbox-data');
$assessmentConfiguration = $this->request->getPost('assessment-configuration');
答案 0 :(得分:2)
您必须使用$request->getFiles()
。我是这样做的:
$validFiles = array();
$data = $request->getPost()->toArray();
$postFiles = $request->getFiles();
foreach ($postFiles as $key => $file) {
if ($file['error'] == UPLOAD_ERR_NO_FILE) continue;
$validFiles[$key] = $file;
}
if (count($validFiles)) $data['files'] = $validFiles;
现在我有一个名为$validFiles
的数组,其成功上传的文件位于$data
数组中(我存储了所有帖子数据)。