MVC流形式存储图片读取问题!

问题描述

例如:用户信息,有一个头像,在数据库是流的形式存储,其他一些字段。我现在的做法是,读取成model,然后绑定页面。头像再做一次请求,返回MVC里的File显示。但是图片一多,显示起来就很慢。我有两个想法:1,用辅助方法,但是怎么都想不出怎么返回。2,把图片存储成文件,但是第二次打开页面依然要重新存储。还是很消耗性能,我在想能不能做个图片对比,如果图片相同,不再存储。但是图片对比好像更麻烦。有没有什么方法提高效率!

解决方案

解决方案二:
asp.net默认不支持http304状态机制,因此它这方面是不太行的。你需要自己在输出图片时在消息头中写入特定的内容,在下一次获取图片时判断是否要直接返回304状态(而不是输出图片)。如果你觉得研究写上这20行代码比较费精神,那么你可以就简单地把图片放在网站的目录下。在页面上,应该使用http://......./images/892389998.jpg这样的地址下载。而不通过你的asp.net程序。因为IIS等web服务都是自动支持它的!下载图片太慢,是因为你得asp.net程序写的不好,你没有支持304状态。
解决方案三:
要看一下图片有没有自动优化,你应该使用一个http调试器来查看你的网页的消息。(不会使用http器,怎们称得上是专业的程序员呢?)然后,如果你对网页执行“刷新”,你会看到所有的图片请求url的response都是304状态,而不是200状态。这就对了!
解决方案四:
publicclassResponseImg:IHttpHandler{staticreadonlyDateTimeRefresh;staticreadonlyDateTimeNow;staticResponseImg(){Now=DateTime.Now;Refresh=Now.AddMonths(1);}publicvoidProcessRequest(HttpContextcontext){if(!string.IsNullOrEmpty(context.Request.Headers["If-Modified-Since"])){DateTimeIfModifiedSince=DateTime.Parse(context.Request.Headers["If-Modified-Since"]);if(IfModifiedSince>Now){context.Response.StatusCode=304;return;}}//stringfolder=context.Request.QueryString["Folder"];stringfilepath=context.Request.QueryString["FilePath"];intwidth=int.Parse(context.Request.QueryString["Width"]);intheight=int.Parse(context.Request.QueryString["Height"]);stringhex=context.Request.QueryString["Hex"];stringpath=context.Server.MapPath(string.Format("/Img/{0}",filepath));byte[]bytes=ImageHelper.Reset(path,width,height);//System.Drawing.Imageimg=ImageHelper.Reset(bytes,width,height);context.Response.Headers["Last-Modified"]=Refresh.ToString();//context.Response.Cache.SetExpires(DateTime.Now.Add(Refresh));//context.Response.Cache.SetMaxAge(refresh);context.Response.Cache.SetCacheability(HttpCacheability.Public);context.Response.CacheControl=HttpCacheability.Public.ToString();context.Response.Cache.SetValidUntilExpires(true);//context.Response.StatusCode=304;//img.Save(context.Response.OutputStream,ImageHelper.GetImageFormat(path));context.Response.ContentType="image/"+hex;context.Response.BinaryWrite(bytes);}如sp1234所说~~~我给出实例代码

时间: 2024-10-22 00:39:33

MVC流形式存储图片读取问题!的相关文章

.Net下二进制形式的文件(图片)的存储与读取详细解析_实用技巧

.Net下图片的常见存储与读取凡是有以下几种:存储图片:以二进制的形式存储图片时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[]. 1.参数是图片路径:返回Byte[]类型: 复制代码 代码如下: public byte[] GetPictureData(string imagepath)        {            ////根据图片文件的路径使用文件流打开,并保存为byte[]               FileStream fs =

java-多个图片一起上传,压缩并且用流形式保存,并不覆盖,读取的时候按照偏移量来取

问题描述 多个图片一起上传,压缩并且用流形式保存,并不覆盖,读取的时候按照偏移量来取 5C java 现在需要多个图片一起上传,后台压缩后,用流文件进行保存,每次新传的都保存到这个流文件内,并且不覆盖,读取的时候按照偏移量来取,着急着急,求源码!求指导!

关于二进制存储图片和读取图片的问题

问题描述 关于二进制存储图片和读取图片的问题 如何将图片以二进制的形式存入数据库中 在二进制的形式读取出来 求代码 解决方案 以二进制进行存储和读取图片以二进制进行存储和读取图片.NET中二进制图片的存储与读取 解决方案二: public byte[] ImageConvertToByte(string filepath) { //filepath = @"E:/e.jpg"; FileStream fs = new FileStream(filepath, FileMode.Open

美图看看图片格式的存储与读取小技巧

玩数码相机的真正乐趣,恐怕多数人都会认为是数码图片的后期应用.的确如此,数码照片由于易存取.可变性大,所以可被应用在诸多领域,比如电子相册.个性头像图.桌面背景图等等.下面要和大家分享的是,在应用过程中,图片格式存储和读取的一些经验技巧. 一.怎么看RAW格式的数码照片 一些配置较高端的数码相机就提供了对"RAW格式"图片的存储支持,这种文件格式最大的特点就是成像质量非常高.严格意义上来说它并不是一种真正的图片文件,而只是一个数据文件,需要使用数码相机附带的专用软件才能读取,比如Nik

文件的存储权限和文件存储与读取两个方面与流的关系

问题描述 文件的存储权限和文件存储与读取两个方面与流的关系 在IO设备中读取或者写入文件时该怎样取得的权限进行操作,文件的存储和读取和IO流的关系该如何理解与定义 解决方案 IO流以一种顺序的方式读取和写入文件,正因为流是顺序的,所以它不但可以表示文件,也可以收发数据.操作设备.文件除了可以顺序访问以外,还支持随机访问.你可以理解顺序访问相当于磁带,而随机访问好比读CD唱片.

VB.NET 如何存储和读取server 2008图片

问题描述 看到论坛上的帖子:http://blog.csdn.net/linjimu/article/details/2754893下载下来运行结果显示还是有些错误在其他地方找到了存储图片的方法,当时却始终不知道怎么让存储在数据库里面的图片显示出来.今天百度了一天都没有找到到底怎么弄,很多百度出来的都运行不了,都提示错误.本人刚学VB.NET2008没多久,不知哪位大神能够提供图片读取的源代码让我学习学习,感激不尽存储的图片到server2008的源代码如下:ImportsSystem.Data

mongodb存储图片和文件实践

可能很多人会问为何要用mongodb存储图片和文件,我的理由是mongodb作存储方便稳定易扩展,我们自己写的文件存储服务器肯定很LOW,除了含有巨量图片的大型系统,一般由公司自研图片存储外,大部分情况下,我们用mongodb足以应付.另外,很多人根本就不知道或者没尝试过用mongodb存储文件,而对方还故意问我为什么用这个.本文特此奉上代码并提供MongoDBClient与spring的集成. 工程结构代码 收藏代码 whatsmars-common |-src |-main |-java |

论IP地址在数据库中应该用何种形式存储

在看公司项目代码时,有涉及到ip地址存储, 使用的是varbinary(4),但没有文档说明 这引发我的思考--缘起   当设计一个数据表时,考虑使用何种列的数据类型对性能有比较大的影响,如存储空间.查询开销等.甚至还影响到一些操作,如ip地址以字符串的形式存储在数据库中,就不可以直接比较大小.还有一点需要考虑,那就是可读性!数据虽然是存储在数据库中,但也要考虑到可读性问题. 本文要探讨的是"IP地址在数据库中,应该使用何种形式存储?",文章将以实验为基础介绍使用何种形式比较适合. 1

jdbc-如何用Java根据存在于sqlserver2000中的图片路径把图片读取出来

问题描述 如何用Java根据存在于sqlserver2000中的图片路径把图片读取出来 把图片都放在一个文件夹里,用sqlserver2000存图片路径,路径该怎么写?如何用Java jdbc桥接方式把图片读取出来?希望高手指导 解决方案 首先我们在sqlserver是有<图片>这个字段用于存贮图片信息的,那我们就解析并输出图片,java读取sqlserver <图片>字段图片并输出你的图片文件夹要在项目下,数据库中写成绝对路径 public class GetPhoto { /*