在一个键中发送多个文件时,javascript formdata是否保持其插入顺序?

在一个键中发送多个文件时,javascript formdata是否保持其插入顺序?,javascript,multipartform-data,Javascript,Multipartform Data,我正试图通过FormData对象发送多个文件。我没有问题,因为我知道我可以将每个文件附加到同一个密钥并以这种方式发送。但是,我想知道插入顺序是否得到了保留和保证。换句话说,我可以在后端按照我在前端的顺序检索文件吗?我查看了MDN文档,但在这里找不到它。虽然它有点密集,但列出了不同post方法必须遵循的算法,因此在本例中,它将是,其中说明: 零件的顺序必须与条目列表中字段的顺序相同。必须将具有相同名称的多个条目视为不同的字段 因此答案似乎是“是的,如果用户代理正确地实现了FormData对象的序列

我正试图通过FormData对象发送多个文件。我没有问题,因为我知道我可以将每个文件附加到同一个密钥并以这种方式发送。但是,我想知道插入顺序是否得到了保留和保证。换句话说,我可以在后端按照我在前端的顺序检索文件吗?我查看了MDN文档,但在这里找不到它。

虽然它有点密集,但列出了不同post方法必须遵循的算法,因此在本例中,它将是,其中说明:

零件的顺序必须与条目列表中字段的顺序相同。必须将具有相同名称的多个条目视为不同的字段


因此答案似乎是“是的,如果用户代理正确地实现了FormData对象的序列化”。

是的,FormData对象的条目按顺序保存。当您访问该列表时,会保留顺序。

我认为更好的问题是:为什么顺序很重要?我们需要一种方法来确定哪个文档是DocumentCategoryA、DocumentCategoryB等等。。。我建议将每个文件以其自己的密钥/值对发送,但被后端人员拒绝,因为他们使用的技术不会让他们这么容易。他建议将用于映射(category-filename)的json与一个数组中的文件一起发送。这不是理想的解决方案,因为无法保证文件名的唯一性。由于文件具有密钥,因此应该有办法通过密钥而不是通过index@MartinTur在
文件[]
文件[]
文件[]
,以及类似
[{“类别”:“a”,“文件名”:“一个”},{“类别”的
描述字段中输入So 3个文件:“B”,“filename”:“two”},{“category”:“B”,“filename”:“one”}]
?@MartinTuróci在multipart/formdata中不能有一个文件数组,只能有多个具有相同字段名的文件。是PHP(可能还有其他一些后端)这样解释它。我建议尝试使用显式索引
files[0]
file1.pdf、
files[1]
file2.pdf
files[2]
file3.pdf(加上json),甚至使用命名属性,如
files[categoryA]
file1.pdf
files[categoryB]
file2.pdf
files[categoryC]
file3.pdf`。是的,如果文件名不能保证唯一,则不能将其用于映射。请注意,虽然FormData列表的顺序很重要,但同样重要的是,一旦提交,顺序将保持不变(即,即使表单列表已排序,序列化/反序列化算法仍需要确保顺序保持不变)@Mike'Pomax'Kamermans是,(尽管我曾怀疑)感谢你在回答中迅速证实了这一点:-)这是让你去“它……它应该是什么?等等,我们到底在哪里记录的?O_O”=D