博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ajax请求二进制流并在页面展示
阅读量:5870 次
发布时间:2019-06-19

本文共 3136 字,大约阅读时间需要 10 分钟。

后端代码:

public void getIntegralQrcode(HttpServletResponse response, String token) throws BizException, IOException, WriterException {        logger.info("qrcode info ...");                response.setCharacterEncoding("UTF-8");         response.reset();         ServletOutputStream os = response.getOutputStream();                // 请求地址        String url = ConfigProperties.getUrl();        logger.info("qrcode info request url -- > {}", url);                // 加密内容        String base64Code = Base64Utils.getBase64Code(WechatQrcodeTypeEnum.H5.getValue(), maculaConfig.getIntegralQrcodeScanName(), null);        logger.info("qrcode info base64Code -- > {}", base64Code);                // 二维码内容        String content = WechatQrcodeUtil.getRequestUrl(url, "2", base64Code);        logger.info("qrcode info -- > {}", content);                QRCodUtil.encodeQRCodeImage(content, null, WechatQrcodeUtil.IMAGE_WIDTH, WechatQrcodeUtil.IMAGE_HEIGHT, os);        os.flush();         os.close();    }

后端工具类:

public class WechatQrcodeUtil {        static Logger logger = LoggerFactory.getLogger(WechatQrcodeUtil.class);        private static final String TYPE = "type";    private static final String NAME = "name";    private static final String PARAM = "param";        // 加密内容定义区域key    private static final String base64= "base64";        private static final String EQUAL_STR = "=";    private static final String AND_STR = "&";    private static final String QUE_STR = "?";        public static final int IMAGE_WIDTH = 262;    public static final int IMAGE_HEIGHT = 262;            /**     * 放入二维码内容     *      * @param url 请求地址     * @param modelType 请求模块名称     * @param base64 加密内容     * @return     */    public static String getRequestUrl(String url, String modelType, String base64){        StringBuffer sb = new StringBuffer();        sb.append(url);        sb.append(QUE_STR);        sb.append(TYPE).append(EQUAL_STR).append(modelType);        sb.append(AND_STR);        sb.append(base64).append(EQUAL_STR).append(base64);        logger.info("request address: {}", sb.toString());        return sb.toString();    }            /**     * 获取加密参数内容     * @param type 类型 @see{WechatQrcodeTypeEnum}     * @param name      *  
  • channelName:
  • *
  • moduleName:
  • *
  • httpurl:在线页面地址
  • * @param urlParams key:value,key:value,... * * @return * @throws UnsupportedEncodingException */ public static String getBase64Code(String type, String name, Object... urlParams) throws UnsupportedEncodingException{ StringBuffer sb = new StringBuffer(); sb.append(TYPE).append(EQUAL_STR).append(type); sb.append(AND_STR); sb.append(NAME).append(EQUAL_STR).append(name); if(urlParams != null){ sb.append(AND_STR); sb.append(PARAM).append(EQUAL_STR).append(urlParams); } logger.info("request params: {}", sb.toString()); return Base64.encode(sb.toString().getBytes()); } }

     

     

    前端Ajax请求:

    <#--  * README * 在页面定义页面token<@macula.formToken /> *  * @author add by liuyc in 2018-11-28 * -->

     

     写入页面后的展示:

     

     

     

    转载于:https://www.cnblogs.com/yuchuan/p/ajax_qrcode.html

    你可能感兴趣的文章
    JSONP实现原理-简析
    查看>>
    限制文件大小及显示文件大小(正则表达式
    查看>>
    学习中的典型思维误区总结
    查看>>
    唯品会架构师是如何实现架构重构的
    查看>>
    学习笔记——freemarker判断对象是否为空
    查看>>
    带你开发一个二维周视图日历
    查看>>
    应用监控的选型思考
    查看>>
    2018阿里云云数据库RDS核心能力演进
    查看>>
    java spring cloud版b2b2c社交电商spring cloud分布式微服务(二)Eureka(服务注册和服务发现基础篇)...
    查看>>
    Python验证码
    查看>>
    java B2B2C 源码 Springcloud多租户电子商城系统
    查看>>
    整合spring cloud云服务架构 - 企业分布式微服务云架构构建
    查看>>
    解决sql 2000问题
    查看>>
    MySQL 5.1.x的安装、优化和安全配置
    查看>>
    硬盘的检测
    查看>>
    openstack+essex+quantum成功show
    查看>>
    对tomcat服务的***演示与安全分析
    查看>>
    Linux-DNS
    查看>>
    Exchange Server 2010升级到SP3
    查看>>
    Extjs 上传文件(二)
    查看>>