// 提交用户头像的图片数据
$("#submitEditAvatar").on("click", function () {
var form = $('#avatarformid')[0];
var formData = new FormData(form); //这里连带form里的其他参数也一起提交了,如果不需要提交其他参数可以直接FormData无参数的构造函数
var base64Codes = $(".cropImg > img").attr("src");
formData.append("file",convertBase64UrlToBlob(base64Codes)); //append函数的第一个参数是后台获取数据的参数名,和html标签的input的name属性功能相同
$.ajax({
url: 'http://localhost:8081/upload',
type: 'POST',
cache: false,
data: formData,
processData: false,
contentType: false,
success: function(data){
。。。。。。。
},
error : function() {
。。。。。。。
}
})
});
我们在 ajax 中 contentType 设置为 false 是为了避免 JQuery 对其操作,从而失去分界符,而使服务器不能正常解析文件。一般来说,你用了content-type=false,可以再加上一个processData = flase,可以参考processData的解释:
processData
类型:Boolean
默认值: true。默认情况下,通过data选项传递进来的数据,如果是一个对象(技术上讲只要不是字符串),都会处理转化成一个查询字符串,以配合默认内容类型 “application/x-www-form-urlencoded”。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。