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

作者:赤原 时间:2023-07-20 09:54:01 

前言

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

操作

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

来源:https://www.cnblogs.com/vilva/p/10830390.html

标签:小程序,小程序码,buffer流
0
投稿

猜你喜欢

  • 简述Asp与XML之间的关系

    2008-04-17 10:46:00
  • 按钮表状态还是表动作?

    2009-03-23 18:21:00
  • 兼容FF的图片切换代码

    2009-09-26 20:15:00
  • 有关asp的系统变量ServerVariables (“HTTP_USER_AGENT“)?

    2009-10-29 12:12:00
  • Go每日一库之quicktemplate的使用

    2023-06-28 01:03:15
  • oracle SQL命令大全

    2009-07-02 11:55:00
  • 开心网让人很不开心

    2009-04-05 15:56:00
  • SQLServer 2005 实现数据库同步备份 过程-结果-分析

    2012-07-11 15:56:55
  • 仿6room网站图片链接效果

    2007-06-21 13:59:00
  • 如何实现让每句话的头一个字母都大写?

    2010-05-24 18:26:00
  • 一个jquery日期选取插件源码

    2009-12-23 19:15:00
  • 交互设计实用指南系列(2) –可及

    2010-01-21 12:48:00
  • Oracle RMAN快速入门指南

    2010-07-18 12:50:00
  • MYSQL主从库不同步故障一例解决方法

    2010-06-09 19:12:00
  • [翻译]标记语言和样式手册 Chapter 16 下一步

    2008-02-22 17:47:00
  • 如何用python给数据加上高斯噪声

    2023-06-13 18:18:04
  • 解决PyCharm同目录下导入模块会报错的问题

    2023-06-12 22:39:55
  • jQuery.data()方法与内存泄漏

    2010-04-06 17:20:00
  • SQL语句中的一些特殊参数如何用变量来代替

    2008-03-14 07:44:00
  • 该死的IE,走好

    2009-01-15 12:26:00
  • asp之家 网络编程 m.aspxhome.com