65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 ASP.NET MVC 实现 HTTP 文件上传

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.46/5 (20投票s)

2009年8月14日

CPOL
viewsIcon

193226

在本文中,我将探讨如何使用 ASP.NET MVC 上传文件。由于 MVC 框架不使用服务器控件,因此了解 MVC 中的文件上传方式将会很有趣。

引言

在本文中,我将探讨如何使用 ASP.NET MVC 上传文件。由于 MVC 框架不使用服务器控件,因此了解 MVC 中的文件上传方式将会很有趣。

使用代码

这是渲染文件上传表单的视图

<%@ Page Title="" Language="C#" 
  MasterPageFile="~/Views/Shared/Site.Master" 
  Inherits="System.Web.Mvc.ViewPage" %>
 
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
            FileUpload
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <h2>FileUpload</h2>
    
     <% using (Html.BeginForm("FileUpload", "FileUpload", 
                    FormMethod.Post, new { enctype = "multipart/form-data" }))
        {%>
        <input name="uploadFile" type="file" />
        <input type="submit" value="Upload File" />
<%} %>
 
</asp:Content>

现在,我将编写一个文件上传控制器,这是我的 FileUploadController.cs

[HandleError]
public class FileUploadController : Controller
{
    public ActionResult FileUpload()
    {
        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult FileUpload(HttpPostedFileBase uploadFile)
    {
        if (uploadFile.ContentLength > 0)
        {
            string filePath = Path.Combine(HttpContext.Server.MapPath("../Uploads"), 
                                           Path.GetFileName(uploadFile.FileName));
            uploadFile.SaveAs(filePath);
        }
        return View();
    }
}

需要注意的是,控制器有两个重载的 FileUpload 方法。第一个 ActionResult FileUpload() 只是为了渲染表单,而带有 [AcceptVerbs(HttpVerbs.Post)] 特性的方法将上传文件。这是用于上传文件的输出表单

摘要

MVC 框架不使用服务器控件,因此我们使用 ASP.NET MVC 构建了一个 HTTP 文件上传方法。

© . All rights reserved.