2013-02-01 94 views
2

我有以下代碼:保存多個文件

[HttpPost] 
    public ActionResult FileUploadMultiple(IEnumerable<HttpPostedFileBase> files) 
    { 

     foreach (var file in files) 
     { 
      if (file != null) 
      { 
       var fileName = Path.GetFileName(file.FileName); 
       string extension = Path.GetExtension(file.FileName); 

       var path = Path.Combine("C://Reports//36000", fileName); 

       file.SaveAs(path); 

      } 

     } 

     return RedirectToAction("Index"); 
    } 

我有2個文件,我測試的 - 所以它應該循環兩次。第一個可以很好地保存給定的路徑。當代碼執行並嘗試執行第二個文件時,我收到以下消息:

進程無法訪問文件'C:\ Reports \ 36000 \ Report#36028.pdf',因爲它正在被另一個處理。

我認爲我需要做一個配置,但是,當我試圖做file.Dispose()這似乎不正確Intellisense

+0

我看來,像這兩個文件具有相同的名稱和另存爲不能覆蓋現有文件。因此,也許System.IO.File.Exist(路徑)在這裏幫助或確保文件名是唯一的 – bembii

+0

我確實需要覆蓋文件,以防萬一他們想更新文件。 –

+0

請注意,用戶可能希望覆蓋具有相同名稱的相同文件。 –

回答

1

你可以試試這個刪除現有的文件,保存前:

if (System.IO.File.Exists(path)) 
System.IO.File.Delete(path); 
file.SaveAs(path);