1. 程式人生 > >微信帶引數二維碼儲存至本地

微信帶引數二維碼儲存至本地

 怎麼生成帶引數二維碼我就不說了介面自己看 

有人會說生成了帶引數二維碼都已經生成了為什麼還要儲存到本地呢  具體需求是這樣的 要將生成的帶引數二維碼打包發給圖片製作商製作 一個個另存為浪費時間 

別的不說了說重點

複製程式碼
     
    public static void SaveQrCodeImage(string strUrl)
    {

        try
        {
            System.Net.Http.HttpClient client = new System.Net.Http.HttpClient();
            Byte[] bytes 
= client.GetByteArrayAsync(strUrl).Result; // return new MemoryStream(bytes); byte[] tt = bytes; //StreamToBytes(stream);//將資料流轉為byte[] //在檔名前面加上時間,以防重名 string imgName = DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg"; //檔案儲存相對於當前應用目錄的虛擬目錄 string
path = "/Uploads/imageminiqrcode/"; //獲取相對於應用的基目錄,建立目錄 string imgPath = System.Web.HttpContext.Current.Server.MapPath(path); //通過此物件獲取檔名 if (!System.IO.Directory.Exists(imgPath)) //如果資料夾不存在則建立 { System.IO.Directory.CreateDirectory(imgPath); } System.IO.File.WriteAllBytes(HttpContext.Current.Server.MapPath(path
+ imgName), tt);//講byte[]儲存為圖片 } catch { throw new Exception("獲取二維碼圖片失敗!"); } }
複製程式碼

資料流轉換為byte[]

複製程式碼
    ///將資料流轉為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();
    }
複製程式碼

使用方法

複製程式碼
protected void Page_Load(object sender, EventArgs e)
    {
    //
"https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQEE8jwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyMVFYY0pjbl84TVQxMDAwMDAwN2MAAgSytOxYAwQAAAAA"
    SaveQrCodeImage("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=gQEE8jwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyMVFYY0pjbl84TVQxMDAwMDAwN2MAAgSytOxYAwQAAAAA");
}
複製程式碼

效果圖

當然還是要吐槽下微信給的帶引數二維碼機制可能考慮安全問題 導致弄個位元組流自己讀寫二維碼不太明智 全當複習複習了(*^__^*) 嘻嘻……

歡迎園友吐槽...