简单文件上传返回 NULL
本文关键字:返回 NULL 文件 简单 | 更新日期: 2023-09-27 18:31:57
>我正在尝试在MVC 5中进行我的第一个简单文件上传。我正在遵循我找到的一堆示例,但由于某种原因,在我的"创建"操作结果中,上传文件始终以 NULL 形式出现,因此上传代码永远不会运行。有人看到我可能做错了什么吗?
@{
ViewBag.Title = "Create";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Documents.</h2>
<h4>Upload a new document.</h4>
<div class="well">
@using (Html.BeginForm("Create", "Documents", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<h3>Select a file to upload. </h3>
<input type="file" name="files" value="" multiple="multiple" />
<input type="submit" value="Upload your file" title="Upload" />
<div style="color:Red;font-size:14px">@ViewBag.Message</div>
}
</div>
这是我的控制器:
// POST: Documents/Create
[HttpPost]
public ActionResult Create(HttpPostedFileBase uploadFile)
{
try
{
if(uploadFile != null && uploadFile.ContentLength > 0)
{
string filePath = Server.MapPath("../SiteDocuments" + uploadFile.FileName);
uploadFile.SaveAs(filePath);
}
return RedirectToAction("Index");
}
catch (Exception ex)
{
return View();
}
}
文件输入元素的名称应与操作方法参数名称匹配。
因此,请更新 HTML 标记以具有相同的 name
属性值。
<input type="file" name="uploadFile" value="" multiple="multiple" />
您的操作方法将是
[HttpPost]
public ActionResult Create(HttpPostedFileBase uploadFile)
{
// do something
}
或者更改操作方法参数名称以与文件输入元素名称匹配。
<input type="file" name="files" value="" multiple="multiple" />
您的操作方法将是
[HttpPost]
public ActionResult Create(HttpPostedFileBase files)
{
if(files!= null && files.ContentLength > 0)
{
// do something
}
}
当您multiple="multiple"
属性添加到输入元素时,浏览器将允许最终用户一次选择多个文件。在这种情况下,如果您的操作方法参数是HttpPostedFileBase
对象的单个实例,它将从选定的n
文件中接收第一个文件。如果你想要所有的文件,你可以将你的参数更改为一个集合,例如
[HttpPost]
public ActionResult Create(IEnumerable<HttpPostedFileBase> files)
{
if (files != null && files.Any())
{
foreach (var file in files)
{
if (file.ContentLength > 0)
{
//do something
}
}
}
}