关于微信小程序获取小程序码并接受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 相关文章推荐
该如何加载google-analytics(或其他第三方)的JS
May 13 Javascript
json中换行符的处理方法示例介绍
Jun 10 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
Jun 11 Javascript
jQuery打印图片pdf、txt示例代码
Jul 22 Javascript
js实现ArrayList功能附实例代码
Oct 29 Javascript
BootStrap智能表单实战系列(七)验证的支持
Jun 13 Javascript
bootstrap table 数据表格行内修改的实现代码
Feb 13 Javascript
js正则表达式验证密码强度【推荐】
Mar 03 Javascript
vue2.0的contextmenu右键弹出菜单的实例代码
Jul 24 Javascript
手机注册发送验证码倒计时的简单实例
Nov 15 Javascript
js循环map 获取所有的key和value的实现代码(json)
May 09 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
Nov 17 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的类树(支持无限分类)
2006/10/09 PHP
PHP输入流php://input介绍
2012/09/18 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
jQuery 点击图片跳转上一张或下一张功能的实现代码
2010/03/12 Javascript
javascript offsetX与layerX区别
2010/03/12 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
鼠标划过实现延迟加载并隐藏层的js代码
2013/10/11 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
JS iFrame加载慢怎么解决
2016/05/13 Javascript
常用的javascript设计模式
2017/01/11 Javascript
nodejs入门教程四:URL相关模块用法分析
2017/04/24 NodeJs
angular中使用Socket.io实例代码
2017/06/03 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
基于Vue SEO的四种方案(小结)
2019/07/01 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
[00:23]魔方之谜解锁款式
2018/12/20 DOTA
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
使用Python脚本实现批量网站存活检测遇到问题及解决方法
2016/10/11 Python
python+influxdb+shell编写区域网络状况表
2018/07/27 Python
python多线程并发及测试框架案例
2019/10/15 Python
Python tkinter界面实现历史天气查询的示例代码
2020/08/23 Python
MAC Cosmetics官方网站:魅可专业艺术彩妆
2019/04/10 全球购物
软件缺陷的分类都有哪些
2014/08/22 面试题
数控专业大学生的自我鉴定
2013/11/13 职场文书
招商经理岗位职责
2013/11/16 职场文书
中学生运动会入场词
2014/02/12 职场文书
孝敬父母的活动方案
2014/08/31 职场文书
市贸粮局召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
关于迟到的检讨书
2015/05/06 职场文书
2015年教务工作总结
2015/05/23 职场文书
追悼词范文大全
2015/06/23 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
nginx服务器的下载安装与使用详解
2021/08/02 Servers
Nginx进程调度问题详解
2021/09/25 Servers
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技