2012-12-26 178 views
0

我正在上傳用戶圖片&將其保存在指定位置。代碼在正常情況下工作正常,即用戶選擇一個圖像&保存它,它的工作原理。當用戶(由於錯誤可能是錯的圖像)選擇圖像&不救它,但再次選擇新的圖像&然後將其保存發生該操作無法完成,因爲該文件在IIS工作進程中打開

挑戰。 這種情況給我錯誤:

「該進程無法訪問該文件,因爲它正在被另一個進程使用。」

當我嘗試在錯誤的時間從位置刪除圖像,文件不能與消息刪除:

「無法完成的操作,因爲該文件是在IIS工作開過程 關閉文件並重試。「

代碼是這樣的:

  try 
      { 
       if (!Directory.Exists(folder)) 
        Directory.CreateDirectory(folder); 

       msf = new MemoryStream(); 
       bytes=FileUpload1.FileBytes; 
       msf.Write(bytes, 0, bytes.Length); 

       using (FileStream stream = new FileStream(folder + "/" + filename, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite)) 
       { 
        //converting any graphic file type to jpeg format 
        Image img = Image.FromStream(msf); 
        img.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg); 

        msf.WriteTo(stream); 
        IsuploadSuccess = true; 
        img.Dispose(); 
       } 
      } 
      catch 
      { 
       IsuploadSuccess = false; 
      } 
      finally 
      { 
       if (msf != null) 
       { 
        msf.Close(); 
        msf.Dispose(); 
       } 
      } 

我曾嘗試加入「FileAccess.ReadWrite」 & 「FileShare.ReadWrite」在文件流,但不會在所有選項的工作,要麼文件流。

請幫助...

+0

你可以請嘗試處理該文件流也。 –

+0

@Mahesh,使用{}塊本身在範圍結束後處理對象。但是,我也嘗試過這種方式。 –

回答

1

非但沒有的問題的解決,我終於改變的方法來擺脫對挑戰的來源。我更改文件名與用戶ID(唯一)附加CurrentDateTime轉換爲字符串&將其存儲到臨時文件夾,直到用戶保存更改。這對於挑戰場景每次都會形成一個不同的文件。將每個文件保存在由用戶創建的臨時文件夾中(以唯一用戶標識開頭)之後,將被刪除&最後的更改將保存到相應的目錄。

相關問題