从请求中提取文件

时间:2014-07-10 21:35:49

标签: c# asp.net asp.net-mvc

我正在使用ASP.net MVC 5。 下面的代码用于存储文件,但我需要存储请求或提取从请求上传的文件,这样我就可以在上传到文件服务器之前将文件传递给另一个类中的方法进行验证。 我在下面注意到Request.Files [upload] .SaveAs包含文件,但是如何将文件传递给另一个类?我尝试将HttpPostedFileBase文件传递给另一个类,但它不识别文件。

在我看来:

 @using (Html.BeginForm("FileUpload",
                          "Upload", 
                          FormMethod.Post,
                          new { enctype = "multipart/form-data" }))

  { <label for="file">Upload Image:</label> 
         <input type="file" name="FileUpload" /><br />
         <input type="submit" name="Submit" id="Submit" value="Upload" />

 }

我的控制器:

 public ActionResult FileUpload(HttpPostedFileBase file)
    {
        //HttpPostedFileBase request = file; 
        foreach (string upload in Request.Files)
        {

          System.Diagnostics.Debug.WriteLine("*********************savepath:" + Request.Files[upload].FileName+"********************");

            string savePath = "C:\desktop";
            string newPathForFile = Path.Combine(savePath, Path.GetFileName(Request.Files[upload].FileName));
            Request.Files[upload].SaveAs(Path.Combine(savePath, newPathForFile));
        }

        return View("Home");
    }

1 个答案:

答案 0 :(得分:1)

你无法真正传递&#34;文件,&#34;因为在这一点上确实没有文件。我们真的在看一堆字节。您的 Request.Files 也应该包含 InputStream 。使用它将文件复制到Byte []缓冲区,然后从那里开始。