zoukankan      html  css  js  c++  java
  • 解决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;
  • 相关阅读:
    GuavaCache简介(一)
    四层、七层负载均衡的区别
    腾讯云服务器 Centos6.5 安装 nginx1.12.0
    tomcat8性能优化
    JAVA 正则表达式的三种模式: 贪婪, 勉强和占有的讨论
    java中值传递和引用传递
    架构师书籍
    大型网站架构系列:20本技术书籍推荐
    RabbitMQ
    支付宝付款流程
  • 原文地址:https://www.cnblogs.com/silences/p/8806894.html
Copyright © 2011-2022 走看看