form表单提交文件报错The current request is not a multipart request 一种解决方法

做图片上传的碰到这个问题,查找原因是html请求的方式问题, 搜索了下,其他人提供的解决方案大致有

  1.    将from上传设为post提交方式
  2.    在from表单的属性设置里面加上enctype="multipart/form-data"
  3.    删除页面设置的或   将页面设置

  均没有解决问题,后来发现form表单在ajax异步提交,对表单$(form).serialize()序列化时,file无法转换为二进制,

所以在表单内添加属性enctype="multipart/form-data",再在ajax中使用FormData强制转化为二进制,便可以提交文件。

 附ajax代码

var formData = new FormData(form);//FormData构造器接收的是一个form的DOM对象
$.ajax({
    url:  '/users/usersavetx',
    type: "POST",
    data: formData,
    dataType: "JSON",
    async: true,
    //要想用jquery的ajax来提交FormData数据,
    //则必须要把这两项设为false
    processData: false,
    contentType: false,
    //这里是防表单重复提交,可以忽略
    beforeSend: function(xhr){
        $("#touxiangfile :submit").attr("disabled",true);
    },
    complete: function(xhr,status){
        $("#touxiangfile :submit").attr("disabled", false);
    },
    error: function(xhr,status,error){
        alert("请求出错!");
    },
    success: function(result){
        alert("表单提交成功!");
    }
});

 ajax请求来源: https://blog.csdn.net/qq_16148137/article/details/51853886

你可能感兴趣的:(form表单提交文件报错The current request is not a multipart request 一种解决方法)