尝试将图像及其属性与表单数据一起传递到数组中时出现问题

时间:2018-12-17 01:05:34

标签: php jquery

关于此问题

我正在尝试将图像及其属性与其他表单数据一起传递到数组中。

由于要发布多个图像,因此这就是发布上载图像数组的原因。在下面的问题中我做错了什么吗?

下面的这部分不起作用,下面是php中的输出。

enter image description here

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属性没有被传递。

enter image description here

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) {
    }
});

1 个答案:

答案 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']将是文件(或临时文件)的数组。