我有一个客户端上传嵌入在JSON对象中的文件,因为这些文件中的每一个都附加了元数据。
问题是我不知道它们将上传多少文件,所以我需要动态的东西
目前,我有一个fileList
javascript对象,其中包含如下所示的子对象:
{
file1: null
meta1: null,
meta2: null,
etc...
}
{
file2: null
meta1: null,
meta2: null,
etc...
}
我这样上传:
formData.append('files', this.fileList);
但是在symfony中,我不知道如何处理这种特殊情况
如果我在探查器中查看,则会得到类似以下内容:
files "[object Object],[object Object]"
和$files = $request->files->get('files');
给出null
还有另一种解码数据的方法吗?它在那里,但我看不懂:(
答案 0 :(得分:0)
如果您要上传一个文件,每个元数据行一个,那么当我使用Ajax形式(我喜欢BlueImp,但还有其他文件)选择该文件时,我会分别发送该文件并将其粘贴到目录(使用清理脚本,该脚本会在24小时后删除它们,S3很好地做到了这一点)。然后将该路径返回到表单,将其放入您提交的JSON格式的正文中,然后获得您的元数据,该元数据恰好包含其待处理的文件路径。在提交时移动待处理文件,并在保存行或其他内容时保留该新引用。瞧!
所以:
files[][filename].onchange: [/* Upload file to pending, return pending path */]
使用返回路径pending/ad32sY3KJ.png
,提交
"files": [
["file":"`pending/ad32sY3KJ.png`","meta1":"Root Beer"],
["file":"`pending/34dks3DWf.png`","meta1":"Cat"]
]
然后,您的路由器处理程序具有一个数组,因此Content-type: application/json
可以正常工作,尽管您可以使用:
$body = \json_decode($request->getContent(), true);
相反。