2014-03-06 96 views
1

我已創建此代碼以上載文件。但它不會上傳我創建的App_Data/Uploads文件夾中的任何文件。 下面是代碼>>在MVC中上傳文件並創建一個鏈接以下載文件

In view>> 

<form action="~/Views/Home/_SaveUpdate" method="post" enctype="multipart/form-data"> 

    <label for="file1">Filename:</label> 
    <input type="file" name="files" id="file1" /> 

    <label for="file2">Filename:</label> 
    <input type="file" name="files" id="file2" /> 

    <input type="submit" /> 
</form> 

And this my Handler>> 

[HttpPost] 
     public ActionResult Index(IEnumerable<HttpPostedFileBase> files) 
     { 
      foreach (var file in files) 
      { 
       if (file.ContentLength > 0) 
       { 
        var fileName = Path.GetFileName(file.FileName); 
        var path = Path.Combine(HttpContext.Server.MapPath("~/App_Data/Uploads"), fileName); 
        file.SaveAs(path); 
       } 
      } 
      return RedirectToAction("Index"); 
     } 

請告訴我該怎麼做更多的工作。另外,如何生成鏈接以下載文件。

回答

0

首先,表單的動作現在指向~/Views/Home/_SaveUpdate,而這應該是/Home/Index根據您的後動作。 其次,確保你已經在你的App_Data文件夾中創建了一個Upload文件夾。 這應該照顧上傳問題。

查看:

<form action="/Home/Index" method="post" enctype="multipart/form-data"> 
    <label for="file1">Filename:</label> 
    <input type="file" name="files" id="file1" /> 
    <label for="file2">Filename:</label> 
    <input type="file" name="files" id="file2" /> 
    <input type="submit" /> 
</form> 

如果你想顯示的下載鏈接,所有上傳的文件,你應該將圖像存儲在不同的文件夾App_Data文件。由於安全原因,App_Data文件夾不能直接訪問。

一個很好的例子,顯示在目錄中的文件可以發現here

0

我把你的代碼,並提出短短的變化,以測試它..和它的工作。

對於我的測試,我只是改變了行動的名稱。 您確定您的表單操作正確嗎?

<form action="~/Views/Home/_SaveUpdate" 

,因爲它不符合你的處理程序的名稱相匹配:

public ActionResult Index(IEnumerable .... 

我的測試: 確保您的上傳文件夾中,否則你會得到一個異常。 的處理程序:

 [HttpPost] 
    public ActionResult FileUploadPost(IEnumerable<HttpPostedFileBase> files) 
    { 
     foreach (var file in files) 
     { 
      if (file.ContentLength > 0) 
      { 
       var fileName = Path.GetFileName(file.FileName); 
       var path = Path.Combine(HttpContext.Server.MapPath("~/Uploads"), fileName); 
       file.SaveAs(path); 
      } 
     } 
     return RedirectToAction("Index"); 
    } 

的觀點:

<form action="FileUploadPost" method="post" enctype="multipart/form-data"> 

     <label for="file1">Filename1:</label> 
     <input type="file" name="files" id="file1" /> 

     <label for="file2">Filename2:</label> 
     <input type="file" name="files" id="file2" /> 

     <input type="submit" /> 
    </form> 
相關問題