2013-02-01 57 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);