mvc api 和 asp.net中输出图片

来源:互联网 发布:c语言打开txt文件举例 编辑:程序博客网 时间:2024/06/05 10:24

 先说说服务器上怎么存储图片,一般的方式有两种,第一种是直接把图片存在数据库中,然后需要的时候从数据库中把图片拿出来,当然这用效率不用想你也知道。   另外一种方式别人给你图片,你把图片存下来,然后把图片存储的地址存下来,放在数据库中。以后别人请求的时候,他只要把图片的路径给你,你给他返回就OK了。


那再来来说说mvc web api中输出图片吧

  

 在之前呢,给别人的接口直接是把文件夹直接放上服务器的端口上的,数据库返回路径,让直接去服务器上拿;不得不说这种方法确实能实现,但是呢,安全性很差,任何一个人都可以去你的借口里去拿图片,第二的网络的ddos攻击,只要试出你的接口,他们就可以无限制的去下载图片,对于你服务器的压力和流量,不用想也知道的吧。


so,我们应该把这个东西写在接口中,然后别人访问你接口的时候你应该设计秘钥或者sessionId的东东来对你的访客进行确认(当然这是写接口所必须的)

下面附上mvc web api中输出图片的方法

 public HttpResponseMessage get(string path)
        {
         
          
            Image img = Image.FromFile(@"D:\picture\"+path); //这里我把路径给出了,他只用给我文件名
            
            MemoryStream ms = new MemoryStream();
            img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
            result.Content = new ByteArrayContent(ms.ToArray());
            result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/Png"); //设置http响应上的Content-Type 为image/Png媒体类型
            
            return result;
            
        }

这样就通过接口返回了一个图片;



下来附上asp.net的图片输出,因为图片是在代码中直接输出的所以比较简单

附上代码:

 public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "image/jpeg";
            Image img = Image.FromFile(@"C:\picture\111111.jpg");
            //context.Response.Write("Hello World");
            MemoryStream s = new MemoryStream();  
            img.Save(s, System.Drawing.Imaging.ImageFormat.Jpeg);
            context.Response.BinaryWrite(s.ToArray());
        }



0 0
原创粉丝点击