关于微信小程序获取小程序码并接受buffer流保存为图片的方法


Posted in Javascript onJune 07, 2019

前言

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

操作

因为我获取到了微信那里的图片的图片流一直不知道怎么处理,今天总算找到相关文档,解决了。因为数据流不能直接传给前端,只好把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。觉得自己摸鱼摸得好厉害,不过终于把坑爬出来,特别开心。哈哈哈~以后要多多写开发记录。上班期间码得很随意

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

Javascript 相关文章推荐
js点击事件链接的问题解决
Apr 25 Javascript
在JavaScript中用getMinutes()方法返回指定的分时刻
Jun 10 Javascript
CSS图片响应式 垂直水平居中
Aug 14 Javascript
详解javascript函数的参数
Nov 10 Javascript
JS实现保留n位小数的四舍五入问题示例
Aug 03 Javascript
CSS3+JavaScript实现翻页幻灯片效果
Jun 28 Javascript
jQuery中ajax获取数据赋值给页面的实例
Dec 31 jQuery
浅谈webpack性能榨汁机(打包速度优化)
Jan 09 Javascript
js贪心算法 钱币找零问题代码实例
Sep 11 Javascript
jquery传参及获取方式(两种方式)
Feb 13 jQuery
JS加载解析Markdown文档过程详解
May 19 Javascript
Vue实现简单购物车功能
Dec 13 Vue.js
vue集成kindeditor富文本的实现示例代码
Jun 07 #Javascript
Vue使用Proxy监听所有接口状态的方法实现
Jun 07 #Javascript
你了解vue3.0响应式数据怎么实现吗
Jun 07 #Javascript
ES6小技巧之代替lodash
Jun 07 #Javascript
vue+element 模态框表格形式的可编辑表单实现
Jun 07 #Javascript
vue-cli3项目展示本地Markdown文件的方法
Jun 07 #Javascript
Element实现表格分页数据选择+全选所有完善批量操作
Jun 07 #Javascript
You might like
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
11个PHP 分页脚本推荐
2011/08/15 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
PHP获取当前日期和时间及格式化方法参数
2015/05/11 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
基于mootools 1.3框架下的图片滑动效果代码
2011/04/22 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
JavaScript多线程详解
2015/08/12 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
老生常谈js中0到底是 true 还是 false
2017/03/08 Javascript
js实现音频控制进度条功能
2017/04/01 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
elementUI中Table表格问题的解决方法
2018/12/04 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
Python中os和shutil模块实用方法集锦
2014/05/13 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
Python函数的参数常见分类与用法实例详解
2019/03/30 Python
Python while循环使用else语句代码实例
2020/02/07 Python
python rsa-oaep加密的示例代码
2020/09/23 Python
Python新建项目自动添加介绍和utf-8编码的方法
2020/12/26 Python
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
全球最大的网上自行车商店:Chain Reaction Cycles
2016/12/02 全球购物
美国餐厅用品和厨房设备批发网站:KaTom Restaurant Supply
2018/01/27 全球购物
NFL官方在线商店:NFLShop
2020/07/29 全球购物
意大利包包和行李箱销售网站:Bagaglio.it
2021/03/02 全球购物
市场营销管理制度
2014/01/29 职场文书
小学生秋游活动方案
2014/02/23 职场文书
公务员爱岗敬业心得体会
2016/01/25 职场文书