我想在我的表单上为用户上传文件并保存在数据库中提供便利。这是如何在 ASP.NET MVC 中完成的。
在我的模型类中写什么数据类型。我尝试使用Byte[]
,但在搭建脚手架期间,解决方案无法在相应的视图中为其生成适当的 HTML。
这些案件如何处理?
我想在我的表单上为用户上传文件并保存在数据库中提供便利。这是如何在 ASP.NET MVC 中完成的。
在我的模型类中写什么数据类型。我尝试使用Byte[]
,但在搭建脚手架期间,解决方案无法在相应的视图中为其生成适当的 HTML。
这些案件如何处理?
您可以byte[]
在模型上使用 a ,HttpPostedFileBase
在视图模型上使用 a 。例如:
public class MyViewModel
{
[Required]
public HttpPostedFileBase File { get; set; }
}
进而:
public class HomeController: Controller
{
public ActionResult Index()
{
var model = new MyViewModel();
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
byte[] uploadedFile = new byte[model.File.InputStream.Length];
model.File.InputStream.Read(uploadedFile, 0, uploadedFile.Length);
// now you could pass the byte array to your model and store wherever
// you intended to store it
return Content("Thanks for uploading the file");
}
}
最后在你看来:
@model MyViewModel
@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div>
@Html.LabelFor(x => x.File)
@Html.TextBoxFor(x => x.File, new { type = "file" })
@Html.ValidationMessageFor(x => x.File)
</div>
<button type="submit">Upload</button>
}