2012-05-22 102 views
0

刪除文件,而我在做下面,我不能更新在Visual Studio 2005無法編輯/目錄

這裏的文件(noimg100.gif)是代碼,

String fileNotFoundPath = context.Server.MapPath("~/common/images/noimg100.gif"); 
context.Response.ContentType = "image/gif"; 
Image notFoundImage = Image.FromFile(fileNotFoundPath); 
notFoundImage.Save(context.Response.OutputStream, ImageFormat.Gif); 

我是否做錯了什麼或者是否需要在最後處理圖像?

編輯: 我發現下面的鏈接,它說,有關不使用Image.FromFile我用的方式:當您打開從文件的圖像 http://support.microsoft.com/kb/309482

+0

您是否收到錯誤消息? – Default

+0

@默認:共享違規 – Hoque

+0

更新?你正在寫映像來響應下載而不更新服務器端,對嗎? –

回答

1

,該文件保持打開只要圖像存在。由於您不處理對象,它將繼續存在,直到垃圾收集器完成並處理它。

Image對象置於代碼末尾,可以再次寫入文件。

可以使用using塊處置的對象,那麼你確信它總是會佈置,即使在代碼中出現錯誤:

String fileNotFoundPath = context.Server.MapPath("~/common/images/noimg100.gif"); 
context.Response.ContentType = "image/gif"; 
using (Image notFoundImage = Image.FromFile(fileNotFoundPath)) { 
    notFoundImage.Save(context.Response.OutputStream, ImageFormat.Gif); 
} 

而且,你不改變圖像以任何方式解壓,然後重新壓縮它是一種浪費。只需打開文件並將其寫入流中:

String fileNotFoundPath = context.Server.MapPath("~/common/images/noimg100.gif"); 
context.Response.ContentType = "image/gif"; 
using (FileStream notFoundImage = File.OpenRead(fileNotFoundPath)) { 
    notFoundImage.CopyTo(context.Response.OutputStream); 
} 
+0

非常感謝。 – Hoque