angular上传文件问题

针对Angular上传文件遇到的问题,解决方案包括设置`processData:false`以阻止jQuery将数据转化为字符串,同时使用`contentType:false`避免Content-Type头导致的上传失败。通过这样的Ajax配置,可以成功进行文件上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值