代码之家  ›  专栏  ›  技术社区  ›  Pankaj

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

  •  2
  • Pankaj  · 技术社区  · 5 年前

    关于这个问题

    因为有多个图像被张贴,所以这就是为什么张贴上传的图像阵列。我在下面的问题上做错什么了吗?

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

    这个很好用。下面是一个预期的输出。

    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 回复  |  直到 5 年前
        1
  •  5
  •   Sally 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);
    });
    

    即使用 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'] 例如,将是一个文件数组(或临时文件)。