原文:微信带参数二维码保存至本地
怎么生成带参数二维码我就不说了接口自己看
生成带参数的二维码
有人会说生成了带参数二维码都已经生成了为什么还要保存到本地呢 具体需求是这样的 要将生成的带参数二维码打包发给图片制作商制作 一个个另存为浪费时间
别的不说了说重点
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");
}
效果图
当然还是要吐槽下微信给的带参数二维码机制可能考虑安全问题 导致弄个字节流自己读写二维码不太明智 全当复习复习了(*^__^*) 嘻嘻……
欢迎园友吐槽...