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;
  • 相关阅读:
    图片 滚动切换效果(五) 高级篇
    图片 滚动切换效果(四)
    图片 滚动切换效果(三)
    图片 滚动切换效果(二)
    图片 滚动切换效果(一)
    新年第一篇 之 (摄像机可视区域)
    SuperSocket源码解析之开篇 (转)
    矮人国之战 之 阵型 模仿(二)
    Web Service
    XML于JSON
  • 原文地址:https://www.cnblogs.com/silences/p/8806894.html
Copyright © 2011-2022 走看看