angular并不好上传文件
一般以formdata形式上传
$http({
method: 'POST',
url: '/wechatapp/User/setAvatar',
data: data,
headers: {
'Content-Type': undefined
},
transformRequest:
function
(data) {
var
formData =
new
FormData();
formData.append('avatar_data', data.adata);
formData.append('avatar_file', data.file);
return
formData;
},
data: {
adata: scope.avatar_data,
file: scope.avatar_file
}
}).success(
function
(d) {
//请求成功
cb(d);
}).error(
function
(err, status) {
console.log(err);
cb(err);
});
也可以借用jquery,
jQuery的文档说,如果它不是一个字符串,jQuery的尝试将数据转换成一个字符串。因此,我们需要增加一个选项:processData:false,在这里告诉jQuery不要碰我的数据!另一种选择的contentType:false以防止jQuery来为你添加一个Content-Type头,否则字符串将被丢失和上传失败。最终的ajax代码就像下面这样:
$.ajax({ url: url, type:'POST', data: formdata, contentType:false,//必须 processData:false,//必须 dataType:'json', success: callback });