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

Pan*_*kaj 2 php jquery

关于这个问题

我试图将图像及其属性与其他表单数据一起传递给数组.

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

以下部分不起作用,下面是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) {
    }
});
Run Code Online (Sandbox Code Playgroud)

这个工作完美.下面是一个预期的输出.

这部分是有效的,因为只发布了图像数组和表单数据.不幸的是,数组中的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) {
    }
});
Run Code Online (Sandbox Code Playgroud)

Sal*_* CJ 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);
});
Run Code Online (Sandbox Code Playgroud)

即使用Product_Additional_Images[{index}]而不仅仅是Product_Additional_Images[].

UPDATE

如果要将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);
});
Run Code Online (Sandbox Code Playgroud)

然后在PHP中,$_FILES['Product_Additional_Images']['tmp_name'][0]['Image']例如,将是一个文件数组(或临时文件).