交流群:462197261站长百科站长论坛热门标签收藏本站北冥有鱼 互联网前沿资源第一站 助力全行业互联网+
点击这里给我发消息
  • 当前位置:
  • 关于微信小程序获取小程序码并接受buffer流保存为图片的方法

    前言

    昨天因为小程序功能要获取小程序程序码,看了微信文档爬了好多坑。(留一下记录以防后面被坑)

    操作

    因为我获取到了微信那里的图片的图片流一直不知道怎么处理,今天总算找到相关文档,解决了。因为数据流不能直接传给前端,只好把buffer流转成图片保存在服务器上,没办法啊~

    废话不多说上代码

        public static string Api_Post(string postUrl, string postData, WebHeaderCollection header = null,bool isPic=false)
         {
          Stream outstream = null;
          Stream instream = null;
          StreamReader sr = null;
          HttpWebResponse response = null;
          HttpWebRequest request = null;
          Encoding encoding = Encoding.UTF8;
          byte[] data = encoding.GetBytes(postData);
          // 准备请求...
          try
          {
            // 设置参数
            request = WebRequest.Create(postUrl) as HttpWebRequest;
            CookieContainer cookieContainer = new CookieContainer();
            request.CookieContainer = cookieContainer;
            request.AllowAutoRedirect = true;
            request.Method = "POST";
            request.ContentType = "application/x-www-form-urlencoded";
            if (header != null) request.Headers = header;
            request.ContentLength = data.Length;
            outstream = request.GetRequestStream();
            outstream.Write(data, 0, data.Length);
            outstream.Close();
            //发送请求并获取相应回应数据
            response = request.GetResponse() as HttpWebResponse;
            //直到request.GetResponse()程序才开始向目标网页发送Post请求
            instream = response.GetResponseStream();
    
            if (isPic)
            {
              byte[] tt = StreamToBytes(instream);//将数据流转为byte[]
              System.IO.File.WriteAllBytes(HttpContext.Current.Server.MapPath("~/WxCode.jpg"), tt);
              WxQRCodeModel model = new WxQRCodeModel();
              model.data = "192.168.1.216:80/WxCode.jpg";
              model.errcode = 0;
              string content = Config.js.Serialize(model);
              string err = string.Empty;
              return content;
            }
            else
            {
              sr = new StreamReader(instream, encoding);
              //返回结果网页(html)代码
              string content = sr.ReadToEnd();
              string err = string.Empty;
              return content;
            }
    
          }
          catch (Exception ex)
          {
            if (isPic)
            {
              sr = new StreamReader(instream, encoding);
              //返回结果网页(html)代码
              string content = sr.ReadToEnd();
              string err = string.Empty;
              return content;
            }
            else
            {
              string err = ex.Message;
              return string.Empty;
            }
          }
        }

    因为是instream接受到微信接口那里发送过来的数据流,就在instream那里处理,把数据流转换为byte[]数组,然后依靠File的WriteAllBytes方法把转换OK的byte[]数组转换为图片存放在服务器上,然后把图片路径交给model。

        ///将数据流转为byte[]
        public static byte[] StreamToBytes(Stream stream)
        {
          List<byte> bytes = new List<byte>();
          int temp = stream.ReadByte();
          while (temp != -1)
          {
            bytes.Add((byte)temp);
            temp = stream.ReadByte();
          }
          return bytes.ToArray();
        }
    
    

    结尾

    最近才接触到微信小程序开发,emmmm。觉得自己摸鱼摸得好厉害,不过终于把坑爬出来,特别开心。哈哈哈~以后要多多写开发记录。上班期间码得很随意

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对北冥有鱼的支持。

    您可能感兴趣的文章:

    • 微信小程序简单的canvas裁剪图片功能详解
    • 微信小程序如何调用图片接口API并居中显示
    • 微信小程序利用Canvas绘制图片和竖排文字详解
    • 微信小程序上传图片到php服务器的方法
    • 详解微信小程序文件下载--视频和图片
    • 微信小程序实现富文本图片宽度自适应的方法
    • 微信小程序图片左右摆动效果详解

    广而告之:
    热门推荐:
    js数字输入框(包括最大值最小值限制和四舍五入)

    由于原文已经介绍的很好了,现在只是一些翻译和小小的补充。 例子 复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xht···

    C#中char和string的入门使用教程

    char 字符 char代表一个Unicode字符,它是System.Char的别名 char someChar = 'a';//定义了一个字符 char newLine= '\n';//这是一个换行符  System.Char定义了一组静态方法: ToUpper 将指定的字符转换为等效的大写形式 ToLower 将指定的字符转换为等效的小写形式 IsWhi···

    基于iview的router常用控制方式

    1 iview的router控制需求 最近在使用iview框架写项目,遇到了一些路由控制上的问题,解决过程中也有一些心得,故在此记录下来. 每个项目在开发时,对于类似tags(标签页)的控制需求都不尽相同,故以下先列出本文所述项目对标签页的控制要求(如有不同需求,本文当也可提供一些思路): ···

    用php来检测proxy

    终于写出个有用的东西了! 能够检测大部分通过代理服务器访问的ip. <?php  //beiji.com   2000.6.17  $ip = getenv("REMOTE_ADDR");  $v = getenv("HTTP_VIA");  $f = getenv("HTTP···

    深入解析HTML的table表格标签与相关的换行问题

    何为table:table者Html表格也,数据之载体。下面是一个比较标准的table代码写法: XML/HTML Code复制内容到剪贴板 <table border="0" cellspacing="0" cellpadding="0" width="100%">   &nbs···

    动态改变textbox的宽高的js

    复制代码 代码如下: <INPUT type="button" value="↓" onclick="document.getElementById('temp10966').style.height=(parseInt (document.getElementById('temp10966').style.height)+150).toString()+'px'"> <INPUT type="butt···

    jQuery实现的购物车物品数量加减功能代码

    本文实例讲述了jQuery实现的购物车物品数量加减功能。分享给大家供大家参考,具体如下: 今天网友翠儿在用Jquery实现购物车物品数量的加减特效的时候遇到问题来问我,我后来帮她解决了这个Jquery特效,现在把它整理出来分享给大家用,虽然功能比较简单,但是很实用。 主要包括···

    PHP生成RSS文件类实例

    本文实例讲述了PHP生成RSS文件类文件。分享给大家供大家参考。具体如下: PHP RSS 生成类实例代码如下: 复制代码 代码如下:<?php if (defined('_class_rss_php')) return; define('_class_rss_php教程',1); /**    *  使用说明:  *  $r···

    表格轮换显示 强

    .jx {FILTER: revealTrans(transition=13,duration=1); WIDTH: 100%; POSITION: absolute} 1潍坊美容网窄告联盟   潍坊蓝月摄影化妆美容专业学校 潍坊华美电子有限公司 昌乐县人民医院医学美容中心 ···

    js实现文字列表无缝滚动效果

    本文实例为大家分享了js文字列表无缝滚动的具体代码,供大家参考,具体内容如下 HTML代码: <div id="rule"> <div class="list" id="list"> <p>用户185****0000 获得XXX优惠券</p> <p>用户185****0000 获得XXX优···