码迷,mamicode.com
首页 > 其他好文 > 详细

通过返回数据流的方式实现相片的显示和下载

时间:2015-03-17 19:39:38      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

问题:由于相片数据是通过Base64加密之后存储在oracle数据库中的,所以通过接口返回的只是数据流格式的图片信息,而没有固定的图片路径。

        没有固定的图片路径,出现的问题是:

        1.在浏览器显示的图片没有办法实现右键图片另存为;

        2.下载图片的时候没有办法只是提供一个固定的url路径

需求:通过数据流的方式返回的图片,使其在前端中显示,并且能够有一个按钮实现图片的下载。

前端代码:

<div class="pic">
<img src="PicHandler.ashx?id=<%=PictureID %>" alt="" />
<br />
<a class="btn btn-info" href="DownPic.ashx?id=<%=PictureID %>">下载相片</a>
</div>

 

后台处理代码在这里只记录数据流返回的一段:

在图片显示PicHandler.ashx中:

//imgUrl是字符串格式的url
Uri myUri = new Uri(imgUrl);
WebRequest webRequest = WebRequest.Create(myUri);
WebResponse webResponse = webRequest.GetResponse();
Bitmap myImage = new Bitmap(webResponse.GetResponseStream());
MemoryStream ms = new MemoryStream();//创建一个内存流
myImage.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);//将图片信息保存到内存流中
context.Response.ClearContent();
context.Response.ContentType = "application/octet-stream";//"image/Jpeg";
context.Response.BinaryWrite(ms.ToArray());//响应给浏览器的是byte[]流

点击按钮下载图片时,实现的代码是:

string fileName = "photo.jpg";//客户端保存的文件名
Uri myUri = new Uri(imgUrl); //通过url字符串获取到uri

WebRequest webRequest = WebRequest.Create(myUri); WebResponse webResponse = webRequest.GetResponse(); Bitmap myImage = new Bitmap(webResponse.GetResponseStream()); //将请求返回的数据流存储为一张相片 myImage.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); //通知浏览器下载文件而不是打开 context.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8)); context.Response.ContentType = "image/jpeg"; context.Response.Flush(); context.Response.End();

主要注意点是两个:图片的下载,没有提供固定的图片路径;

1、将图片保存到context.Response.OutputStream中;

2、//通知浏览器下载文件而不是打开

     context.Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8));

通过这样的方法,可以实现图片的下载 ,但是右键图片另存为这个功能还是使用不了的。

 

通过返回数据流的方式实现相片的显示和下载

标签:

原文地址:http://www.cnblogs.com/yaoxinrisk/p/4345054.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!