如果输入文件在没有表单的ajax请求中作为数组元素传递,Array对象变为空的原因

问题描述 投票:1回答:1

当我尝试在选择后上传文件而不将其分配给数组时它可以正常工作但是当将文件对象指定为数组元素时$ _FILES变为空

HTML

<input type='file' name='image' class='image'>

脚本

var img = $('.image').prop('files')[0];
var ajax_data=['product','price',img];

var postData = new FormData();
    postData.append('data',ajax_data);


$.ajax({
     type: "POST",
     processData: false, 
     contentType: false, 
     url: base_url + "/admin/create_bill",
     data:postData,
     success: function (data) {
                  alert('data has been submitted')
            }
 });
}
});

注意:如果是使用JSON.stringify(ajax_data)所有数组元素成功传递给服务器只有文件对象变空,而我不使用JSON.stringify()$ _FILES变空

简单来说,我想传递一个包含文件对象和纯字符串数据的数组

javascript jquery ajax form-data asyncfileupload
1个回答
0
投票

你可以POST FormData对象到服务器包括必要的数据。如果要求是上传数组,您可以将File对象转换为data URL字符串,将数组转换为JSON,将POST字符串转换为JSON字符串到服务器。

© www.soinside.com 2019 - 2024. All rights reserved.