首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >上传的HttpPostedFile为空

上传的HttpPostedFile为空
EN

Stack Overflow用户
提问于 2009-02-13 00:16:41
回答 12查看 43.8K关注 0票数 20

在视图上:

代码语言:javascript
运行
复制
<% =Html.BeginForm("About", "Home", FormMethod.Post, new {enctype="multipart/form-data "})%>
  <input type="file" name="postedFile" />
  <input type="submit" name="upload" value="Upload" />
<% Html.EndForm(); %>

在控制器中,有类似这样的东西:

代码语言:javascript
运行
复制
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult About(HttpPostedFile postedFile)
{
    //but postedFile is null 
    View();
}

About()中的postedFile为空。如何上传文件?

EN

回答 12

Stack Overflow用户

发布于 2009-07-13 12:29:42

使用HttpPostedFileBase (而不是HttpPostedFile)并将参数命名为与表单中完全相同的名称。例如:如果你有

代码语言:javascript
运行
复制
<input type="file" id="file1" name="file1" />

你必须有方法的头部:

代码语言:javascript
运行
复制
public ActionResult About(HttpPostedFileBase file1)
票数 36
EN

Stack Overflow用户

发布于 2009-02-13 00:51:45

这并不能解释为什么您的参数为空,但您可以直接深入研究该请求。不过,这可能不是最"MVC“的方式。在你的方法体中尝试这样做:

代码语言:javascript
运行
复制
var upload = Request.Files["postedFile"]
if (upload.ContentLength > 0)
{
  // Do whatever
}

为了更加"MVC“,您可以将该代码从控制器中提取到IModelBinder实现中,并使用自定义对象作为您的方法的参数。此Scott Hanselman blog post显示了实现自定义ModelBinder的步骤。

票数 7
EN

Stack Overflow用户

发布于 2015-08-26 00:06:46

使用这个

代码语言:javascript
运行
复制
public ActionResult Upload(HttpPostedFileBase excelfile)

更改HttpPostedFileBaseHttpPostedFile

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/544182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档