2011-11-04 48 views
0

我已經做了一些四處尋找,似乎解決問題的辦法似乎是更改文件的內容標題,以免將其視爲常規圖像。點擊鏈接指向圖像時,如何向用戶顯示保存文件對話框?

這一切都很好,我試圖寫一個圖像處理程序來這樣做。問題是我使用的圖像有多種格式。我將使用jpg/png/tiff/eps。

我的計劃是使用Bitmap類打開文件,然後使用保存到輸出流:

Bitmap bmap = new Bitmap(context.Server.MapPath(imagePath)); 
bmap.Save(context.Response.OutputStream, ImageFormat.<Format goes here>); 

的問題是,淨似乎並不支持EPS擴展因此如何我是否處理這些文件?我採取了正確的方法嗎?

感謝

編輯:

我實際使用的兩個您的建議相結合拿出:

// determine what type of file to send back 
switch (Path.GetExtension(imagePath)) 
{ 
    case ".png": 
     context.Response.ContentType = "image/png"; 
     context.Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".png"); 
     break; 
    case ".jpg": 
     context.Response.ContentType = "image/jpeg"; 
     context.Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".jpg"); 
     break; 
    case ".tiff": 
     context.Response.ContentType = "image/tiff"; 
     context.Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".tif"); 
     break; 
    case ".eps": 
     context.Response.ContentType = "image/postscript"; 
     context.Response.AddHeader("content-disposition", "attachment; filename=" + fileName + ".eps"); 
     break; 
} 

context.Response.WriteFile(context.Server.MapPath(imagePath)); 
context.Response.Flush(); 

似乎做的伎倆 - 既感謝您的幫助!

+1

沒問題 - 如果我們的答案都不完整,回答自己的問題然後將其標記爲答案(而不是在您的問題中發佈解決方案!) –

+0

是的,我試圖這樣做,但它說我必須等待8個小時 - 我會在明天更新:-) – alimac83

回答

4

您是否聽說過內容處置標題?它允許你告訴瀏覽器詢問用戶如何處理文件,而不是自己嘗試和處理。我不認爲它是HTTP規範的一部分,但它由IETF根據RFC 2183記錄。

some documentation on MSDN顯示如何添加所需的響應標頭。

2

我會建議使用上context.Response提供的WriteFile的方法之後調用刷新,即:

Response.WriteFile(context.Server.MapPath(imagePath)); 
Response.Flush(); 

希望這有助於。

相關問題