我如何解决:无法使用 formData 上传图像(浏览器兼容性)

How I fixed: Can't upload images using formData (Browser Compatibilty)

无法在 iOS 上使用 FormData,但在包括 Safari 在内的所有桌面浏览器中都可以使用。

$("#form").on('submit', function(e){

  let formData = new FormData(this);
  
  sendwithAjax(formData);
});

由于这个原因,我在使用 FormData 时遇到了一些问题:

$("#form").on('submit', function(e){

  let formData = new FormData(this);
  
  sendwithAjax(formData);
});

大多数浏览器都支持这个。变量 'this' 或 'e.currentTarget' 对应于包含所有输入的表单。所以我们只做一个表单的formData。

好吧,在移动方面,iOS,更具体地说,事情并不顺利。 XHR 请求刚刚崩溃。

我是这样修复的:

var formData = new FormData();

for (var i = 0; i < form.length; i++) {
 var element = form[i];

 if(element.type === "file" && element.files.length > 0){
  formData.append(element.name, element.files[0], element.files[0].name);
 } else if(element.type === "checkbox" && element.checked){
  formData.append(element.name, element.value);
 } else if(element.type !== "checkbox"){
  formData.append(element.name, element.value);
 }
  
}

sendWithAjax(formData)

问题出在 FormData 实例中的 'form',所以我手动放置了表单的每个元素并且它起作用了。