HttpWebRequest 请求图片路径返回base64编码

persuit666 2016-06-01 04:41:16
最近有个word编写的项目,word中的图片必须为base64格式的那种图片,目前图片都存放在服务器上,能获取到http路径,比如 http://xxx.png,我用HttpWebRequest去请求这个路径,怎么能得到这个图片的base64编码,因为我要在前台网页中
这样调用
<img src="data:image/png;base64,这里是base64编码">
目前大体写了下,返回的串是乱码,并且前台图片也显示不了,是什么原因?附代码如下

 HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ImgSrc);
request.Method = "GET";
request.Timeout = 30000;
request.AllowAutoRedirect = true;
request.ContentType = "image/png";
request.UserAgent = "Mozilla/5.0 (Windows NT 5.2; rv:11.0) Gecko/20100101 Firefox/11.0";
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

StreamReader reader = new StreamReader(response.GetResponseStream());
string htmlstr = reader.ReadToEnd();
reader.Close();

response.Close();
htmlstr = new StringToBase64().CStringToBase64(htmlstr);

return Content(htmlstr);
...全文
1117 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
persuit666 2016-06-01
  • 打赏
  • 举报
回复
感谢版主,答到点上了!已解决问题!论坛就是需要这样的大神指点迷津!
persuit666 2016-06-01
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
http://blog.csdn.net/starfd/article/details/45840853 http://www.jb51.net/article/53410.htm 先用第一个获取图片Image,然后再用第二个转化成base64
就差最后一步了,把你的代码又封装了一层接口,外部传入url获取base64编码,为毛前台页面img 不显示呢??是个x号
引用 5 楼 shingoscar 的回复:
请先搞搞清楚返回的数据是什么格式的数据 首先不是你浏览器访问能得到图片,HttpWebRequest也能得到一样的结果,还要受到cookie等属性的影响 然后,如果返回的时二进制的图片,又不是文本,为什么你要读取成string???应该读为byte[]
菜鸟级别!看看版主的回复,我都做完了!
Poopaye 2016-06-01
  • 打赏
  • 举报
回复
请先搞搞清楚返回的数据是什么格式的数据 首先不是你浏览器访问能得到图片,HttpWebRequest也能得到一样的结果,还要受到cookie等属性的影响 然后,如果返回的时二进制的图片,又不是文本,为什么你要读取成string???应该读为byte[]
  • 打赏
  • 举报
回复
http://blog.csdn.net/starfd/article/details/45840853 http://www.jb51.net/article/53410.htm 先用第一个获取图片Image,然后再用第二个转化成base64
persuit666 2016-06-01
  • 打赏
  • 举报
回复
引用 2 楼 lth3696 的回复:
public void httpDownFile(string url, string fileName) { Stream str = null, fs = null; try { WebClient DownFile = new WebClient(); DownFile.DownloadFile(url, fileName); str = DownFile.OpenRead(url); //判断并建立文件 if (createFile(fileName)) { byte[] mbyte = new byte[1024]; int readL = str.Read(mbyte, 0, 1024); fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write); //读取流 while (readL != 0) { //downLength += readL;//已经下载大小 fs.Write(mbyte, 0, readL);//写文件 readL = str.Read(mbyte, 0, 1024);//读流 //progressBar.Value = (int)(downLength * 100 / fileLength); //lable.Text = "已经下载" + progressBar.Value.ToString() + "%"; System.Windows.Forms.Application.DoEvents(); } str.Close(); fs.Close(); //lable.Text = "下载已经完成"; } } catch (Exception ex) { if (str != null) str.Close(); if (fs != null) fs.Close(); MessageBox.Show(ex.Message); } } 这是我以前捣鼓的代码. 看看有没有参考价值 转编码的那个没搞过. 呵呵
基本没参考价值。。。。。。。。。。。。。。。。肯定是完整的图片啊 url地址栏都能访问
lth3696 2016-06-01
  • 打赏
  • 举报
回复
public void httpDownFile(string url, string fileName) { Stream str = null, fs = null; try { WebClient DownFile = new WebClient(); DownFile.DownloadFile(url, fileName); str = DownFile.OpenRead(url); //判断并建立文件 if (createFile(fileName)) { byte[] mbyte = new byte[1024]; int readL = str.Read(mbyte, 0, 1024); fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write); //读取流 while (readL != 0) { //downLength += readL;//已经下载大小 fs.Write(mbyte, 0, readL);//写文件 readL = str.Read(mbyte, 0, 1024);//读流 //progressBar.Value = (int)(downLength * 100 / fileLength); //lable.Text = "已经下载" + progressBar.Value.ToString() + "%"; System.Windows.Forms.Application.DoEvents(); } str.Close(); fs.Close(); //lable.Text = "下载已经完成"; } } catch (Exception ex) { if (str != null) str.Close(); if (fs != null) fs.Close(); MessageBox.Show(ex.Message); } } 这是我以前捣鼓的代码. 看看有没有参考价值 转编码的那个没搞过. 呵呵
lth3696 2016-06-01
  • 打赏
  • 举报
回复
你的先确定你获取到的是完整的图片. 再去转换 你这代码能把图片保存到本地. 正常打开么

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧