mvc api 和 asp.net中輸出圖片

 先說說服務器上怎麼存儲圖片,一般的方式有兩種,第一種是直接把圖片存在數據庫中,然後需要的時候從數據庫中把圖片拿出來,當然這用效率不用想你也知道。   另外一種方式別人給你圖片,你把圖片存下來,然後把圖片存儲的地址存下來,放在數據庫中。以後別人請求的時候,他只要把圖片的路徑給你,你給他返回就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());
        }



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章