2014-03-06 60 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> 
相关问题