发送没有表单的文件,在变量中写入文件

时间:2017-09-15 07:36:37

标签: javascript jquery ajax

是否可以在变量中传输没有表单的文件,并且在ajax参数中没有contentType:false,processData:false?

$(div).find('input, textarea').each(function(index, element) {
  //...
    var fileArr = []
    if (type === 'file' && element.files.length) {
       var file = $(element)[0].files[0];

         var fileData = new FormData();

         fileData.append('file', file);

         fileArr.push(fileData);
    }
    //...
}

    $.ajax({
                type: "POST",
                url: "/ajax/sendData",
                success: function (data) {},
                error: function (error) {},
                async: true,
                data: {
                   id: 34,
                   val: 34,
                   files: fileArr
                },
                cache: false,
                contentType: false,  //<-- without
                processData: false, //<-- without
                timeout: 10000
            });
  

非法调用

1 个答案:

答案 0 :(得分:0)

这是正确的语法:

var myFormData = new FormData();
myFormData.append('pictureFile', pictureInput.files[0]);

$.ajax({
  url: 'upload.php',
  type: 'POST',
  processData: false, // important
  contentType: false, // important
  dataType : 'json',
  data: myFormData
});
  

来源:https://stackoverflow.com/a/26690647/7641442

无论如何,正如答案所说,您可以通过初始化FormData()来避免使用现有表单,但需要使用ajax传输文件^^

如果您想尝试不同的方法,可以尝试将文件转换为字符串并传递