解决ajax获取流文件乱码问题

问题描述
----
开发过程中遇到通过ajax访问后台获取图片验证码
接口会返回乱码
另外下载zip图片包的时候也是返回一堆乱码

 

 

一开始采用的方法是通过ajax访问接口拿到返回的结果,结果是上图乱码,后面发现直接在img src属性里填写接口就可以直接拿到

但是我们的接口都是经过签名的,所以最后的方法是将接口地址和参数地址拼接返回,js将src替换成返回的url这个时候就完美的解决了问题

大概的代码如下

  //获取图片验证码
  getCodeImg: function(param) {
    //只对type进行签名,然后进行拼接
    var param = _bale.pack("img", param);
    var parameters = "?";
    for (var key in param) {
      parameters += key + "=" + param[key] + "&";
    }
    parameters = parameters.substr(0, parameters.length - 1);
    //编码因为paramMap={"type":""}的{}在liunx无法使用
    parameters = encodeURI(parameters);
  var url = _mm.getServerUrl("sso", "");
    return url + "/common/getCodeImg" + parameters;
  }

//请求url
var
url = _orderApi.getCodeImg(imgParam); $("#imgCode").attr("src", url);

 

 

另外还有个下载zip压缩包的功能也是类似

 exportProImg: function(data, resolve, reject) {
    //只对type进行签名,然后进行拼接
    var param = _bale.pack("exportImg", data);
    var parameters = "?";
    for (var key in param) {
      parameters += key + "=" + param[key] + "&";
    }
    parameters = parameters.substr(0, parameters.length - 1);
    var url = _mm.getServerUrl("upload", "");
    return url + "/upload/exportImg" + parameters;
  }
   //二进制文件打开方式
       var url = _product.exportProImg({ goodsImgs: goodsImgs, goodsCode: this.data.goodsDetails.goodsCode });
//直接在浏览器打开 window.location.href
= url;

 

posted @ 2018-04-12 11:56  sunniejs  阅读(5330)  评论(0编辑  收藏  举报