关于微信小程序获取小程序码并接受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 相关文章推荐
javascript new后的constructor属性
Aug 05 Javascript
jQuery 常见操作实现方式和常用函数方法总结
May 06 Javascript
js编写trim()函数及正则表达式的运用
Oct 24 Javascript
jQuery中$.fn的用法示例介绍
Nov 05 Javascript
javascript设置连续两次点击按钮时间间隔的方法
Oct 28 Javascript
Jquery中find与each方法用法实例
Feb 04 Javascript
javascript省市区三级联动下拉框菜单实例演示
Nov 29 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
Jul 06 Javascript
js中json处理总结之JSON.parse
Oct 14 Javascript
微信小程序开发之实现自定义Toast弹框
Jun 08 Javascript
Vue实现 点击显示再点击隐藏效果(点击页面空白区域也隐藏效果)
Jan 16 Javascript
JavaScript实现移动小精灵的案例代码
Dec 12 Javascript
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函数(简单整理)
2010/04/30 PHP
PHP读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
php rsa 加密,解密,签名,验签详解
2016/12/06 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
经过绑定元素时会多次触发mouseover和mouseout事件
2014/02/28 Javascript
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
jQuery实现仿新浪微博浮动的消息提示框(可智能定位)
2015/10/10 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
nodejs入门教程六:express模块用法示例
2017/04/24 NodeJs
JS排序算法之冒泡排序,选择排序与插入排序实例分析
2017/12/13 Javascript
Nodejs把接收图片base64格式保存为文件存储到服务器上
2018/09/26 NodeJs
vue实现点击隐藏与显示实例分享
2019/02/13 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
python opencv 图像拼接的实现方法
2019/06/27 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
linux中如何使用python3获取ip地址
2019/07/15 Python
pyqt5中动画的使用详解
2020/04/01 Python
python小白学习包管理器pip安装
2020/06/09 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
编码实现字符串转整型的函数
2012/06/02 面试题
软件缺陷的分类都有哪些
2014/08/22 面试题
2014年信用社工作总结
2014/11/25 职场文书
小学五一劳动节活动总结
2015/02/09 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
学生检讨书范文
2019/06/24 职场文书
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android