如何将文件发布到 asp.net mvc 应用程序? [复制]

Posted

技术标签:

【中文标题】如何将文件发布到 asp.net mvc 应用程序? [复制]【英文标题】:How to POST a file to asp.net mvc app? [duplicate] 【发布时间】:2013-12-12 13:47:49 【问题描述】:

我将一个简单的文本文件发布到一个 asp.net MVC 应用程序。当我使用下面的表单发布时,表单参数不为空。但是 file 是。任何想法我做错了什么?

<form method=post action="http://localhost/Home/ProcessIt" 
enctype="application/x-www-form-urlencoded"> 
<input type=file id="thefile" name="thefile" /> 
<input type="submit" name="Submit" /> 
</form>

在 asp.net mvc 应用中:

[HttpPost]
public ActionResult ProcessIt(FormCollection thefile)

  HttpPostedFileBase file = Request.Files["thefile"];
  ...

【问题讨论】:

***.com/questions/5193842/file-upload-asp-net-mvc-3-0/… 如果我使用HttpPostedFileBase,参数将为null。 对输入元素和方法参数使用相同的名称。按照我发布的链接 我已经更新了帖子。我对输入元素和方法参数使用相同的 ID/名称。还是没有文件。 让它与 FormCollection 一起工作。 IE 正在缓存我的表单字段。刷新后,它就开始工作了。 【参考方案1】:

这对我有用:

查看:

@using (html.BeginForm("Index", "Home", FormMethod.Post, new  enctype = "multipart/form-data" ))

    <input type="file" name="file" />
    <input type="submit" value="OK" />

控制器:

[HttpPost]
public ActionResult Index(HttpPostedFileBase file)

    // Verify that the user selected a file
    if (file != null && file.ContentLength > 0) 
    
        // extract only the fielname
        var fileName = Path.GetFileName(file.FileName);

        // then save on the server...
        var path = Path.Combine(Server.MapPath("~/uploads"), fileName);
        file.SaveAs(path);
    
    // redirect back to the index action to show the form once again
    return RedirectToAction("Index");        

【讨论】:

您应该真正指向原始解决方案,而不是复制和粘贴您自己的解决方案。 ***.com/a/5193851/1759873【参考方案2】:

需要将enctype改为multipart/form-data:http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2

【讨论】:

文件仍为空。 Request.Files 集合中没有任何内容。

以上是关于如何将文件发布到 asp.net mvc 应用程序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将项目引用添加到 ASP.NET Core 1.0 MVC 项目

如何将数据从表示层传递到业​​务逻辑层? (ASP.NET MVC 5)

如何将 ID 属性添加到 asp.net MVC 链接元素

如何将媒体属性添加到 ASP.NET MVC4 样式包

如何将 Web API 添加到现有的 ASP.NET MVC (5) Web 应用程序项目中?

如何缓存将图像返回到asp.net mvc中的视图的操作方法的输出?