关于此问题
我正在尝试将图像及其属性与其他表单数据一起传递到数组中。
由于要发布多个图像,因此这就是发布上载图像数组的原因。在下面的问题中我做错了什么吗?
下面的这部分不起作用,下面是php中的输出。
var fileData = new FormData();
$.each(Product_Additional_Images, function(index, file) {
var Product_Sort_No = "1";
var fileObject = file.files[0];//this is file
var data = {
"Image" : fileObject,
"Sort_No": Product_Sort_No
}
fileData.append("Product_Additional_Images[]", JSON.stringify(data));
});
fileData.append('Product_ID', "1");
$.ajax({
method: "POST",
url: "sample url",
cache: false,
async: true,
data: fileData,
processData: false,
contentType: false,
success: function(response) {
},
error: function(result) {
}
});
这很完美。以下是一个预期的输出。
这部分正常工作是因为仅发布图像数组和表单数据。不幸的是,数组中的Image属性没有被传递。
var fileData = new FormData();
$.each(Product_Additional_Images, function(index, file) {
fileData.append("Product_Additional_Images[]", file.files[0]);
});
fileData.append('Product_ID', "1");
$.ajax({
method: "POST",
url: "sample url",
cache: false,
async: true,
data: fileData,
processData: false,
contentType: false,
success: function(response) {
},
error: function(result) {
}
});
答案 0 :(得分:5)
您应该像这样发送它:
$.each(Product_Additional_Images, function(index, file) {
var Product_Sort_No = "1";
fileData.append("Product_Additional_Images[" + index + "][Image]", file.files[0]);
fileData.append("Product_Additional_Images[" + index + "][Sort_No]", Product_Sort_No);
});
即使用Product_Additional_Images[{index}]
而不是Product_Additional_Images[]
。
如果要将Image
项目作为图像/文件数组发送:
$.each(Product_Additional_Images, function(index, file) {
var Product_Sort_No = "1";
//fileData.append("Product_Additional_Images[" + index + "][Image]", file.files[0]);
$.each(file.files, function(){
fileData.append("Product_Additional_Images[" + index + "][Image][]", this);
});
fileData.append("Product_Additional_Images[" + index + "][Sort_No]", Product_Sort_No);
});
然后在PHP中,例如$_FILES['Product_Additional_Images']['tmp_name'][0]['Image']
将是文件(或临时文件)的数组。