關(guān)于微信小程序獲取小程序碼并接受buffer流保存為圖片的方法
前言
昨天因?yàn)樾〕绦蚬δ芤@取小程序程序碼,看了微信文檔爬了好多坑。(留一下記錄以防后面被坑)
操作
因?yàn)槲耀@取到了微信那里的圖片的圖片流一直不知道怎么處理,今天總算找到相關(guān)文檔,解決了。因?yàn)閿?shù)據(jù)流不能直接傳給前端,只好把buffer流轉(zhuǎn)成圖片保存在服務(wù)器上,沒(méi)辦法啊~
廢話不多說(shuō)上代碼
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);
// 準(zhǔn)備請(qǐng)求...
try
{
// 設(shè)置參數(shù)
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();
//發(fā)送請(qǐng)求并獲取相應(yīng)回應(yīng)數(shù)據(jù)
response = request.GetResponse() as HttpWebResponse;
//直到request.GetResponse()程序才開(kāi)始向目標(biāo)網(wǎng)頁(yè)發(fā)送Post請(qǐng)求
instream = response.GetResponseStream();
if (isPic)
{
byte[] tt = StreamToBytes(instream);//將數(shù)據(jù)流轉(zhuǎn)為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);
//返回結(jié)果網(wǎng)頁(yè)(html)代碼
string content = sr.ReadToEnd();
string err = string.Empty;
return content;
}
}
catch (Exception ex)
{
if (isPic)
{
sr = new StreamReader(instream, encoding);
//返回結(jié)果網(wǎng)頁(yè)(html)代碼
string content = sr.ReadToEnd();
string err = string.Empty;
return content;
}
else
{
string err = ex.Message;
return string.Empty;
}
}
}因?yàn)槭莍nstream接受到微信接口那里發(fā)送過(guò)來(lái)的數(shù)據(jù)流,就在instream那里處理,把數(shù)據(jù)流轉(zhuǎn)換為byte[]數(shù)組,然后依靠File的WriteAllBytes方法把轉(zhuǎn)換OK的byte[]數(shù)組轉(zhuǎn)換為圖片存放在服務(wù)器上,然后把圖片路徑交給model。
///將數(shù)據(jù)流轉(zhuǎn)為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();
}
結(jié)尾
最近才接觸到微信小程序開(kāi)發(fā),emmmm。覺(jué)得自己摸魚(yú)摸得好厲害,不過(guò)終于把坑爬出來(lái),特別開(kāi)心。哈哈哈~以后要多多寫(xiě)開(kāi)發(fā)記錄。上班期間碼得很隨意
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
微信小程序開(kāi)發(fā)中組件的生命周期詳細(xì)介紹
生命周期是指一個(gè)對(duì)象從創(chuàng)建→>運(yùn)行>銷毀的整個(gè)階段,強(qiáng)調(diào)的是一個(gè)時(shí)間段,文中介紹了小程序中組件的生命周期,需要的朋友可以參考下2022-08-08
Javascript 函數(shù)的四種調(diào)用模式
這篇文章主要介紹了Javascript 函數(shù)的四種調(diào)用模式的相關(guān)資料,需要的朋友可以參考下2016-11-11
JavaScript本地?cái)?shù)據(jù)存儲(chǔ)sessionStorage與localStorage使用詳解
這篇文章主要介紹了JavaScript本地?cái)?shù)據(jù)存儲(chǔ)sessionStorage與localStorage使用,localStorage:永久存儲(chǔ)在本地,適合保存在本地的數(shù)據(jù)。sessionStorage:會(huì)話級(jí)的存儲(chǔ),敏感帳號(hào)一次登陸2022-10-10
html+js實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器代碼(加減乘除)
下面小編就為大家?guī)?lái)一篇html+js實(shí)現(xiàn)簡(jiǎn)單的計(jì)算器代碼(加減乘除)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07
微信小程序中使用自定義圖標(biāo)(阿里icon)的方法
這篇文章主要介紹了微信小程序中使用自定義圖標(biāo)(阿里icon)的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08
JavaScript設(shè)計(jì)模式之調(diào)停者模式實(shí)例詳解
這篇文章主要介紹了JavaScript設(shè)計(jì)模式之調(diào)停者模式,詳細(xì)分析了調(diào)停者模式的概念、原理、優(yōu)缺點(diǎn)并結(jié)合javascript實(shí)例形式給出了相關(guān)使用技巧,需要的朋友可以參考下2018-02-02
微信小程序?qū)崿F(xiàn)發(fā)微博功能的示例代碼
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)發(fā)微博功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
JavaScript創(chuàng)建對(duì)象的常用方式總結(jié)
這篇文章主要介紹了JavaScript創(chuàng)建對(duì)象的常用方式,結(jié)合實(shí)例形式總結(jié)分析了javascript面向?qū)ο蟪绦蛟O(shè)計(jì)中對(duì)象創(chuàng)建的常見(jiàn)方式、相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-08-08
基于dataset的使用和圖片延時(shí)加載的實(shí)現(xiàn)方法
下面小編就為大家分享一篇基于dataset的使用和圖片延時(shí)加載的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12

