首先,确保您在视图中正确地使用了HTML表单,并将表单的ENCTYPE属性设置为“multipart/form-data”,以便正确地处理文件上传操作。
例如:
@using (Html.BeginForm("UploadFile", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
}
然后,在您的控制器操作中,添加以下代码来处理文件上传操作:
[HttpPost]
public ActionResult UploadFile(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
// 获取文件后缀名
var fileExtension = Path.GetExtension(file.FileName);
// 保存文件到服务器
var fileName = Path.GetFileNameWithoutExtension(file.FileName) + "_" + DateTime.Now.ToString("yyyyMMddHHmmss") + fileExtension;
var path = Path.Combine(Server.MapPath("~/App_Data"), fileName);
file.SaveAs(path);
// 将文件信息保存到数据库中
var fileInfo = new FileInfo
{
FileName = fileName,
FilePath = path
};
dbContext.FileInfos.Add(fileInfo);
dbContext.SaveChanges();
// 重定向到文件列表页面
return RedirectToAction("FileList");
}
// 如果文件不存在或者大小为0,返回错误信息
ViewBag.ErrorMessage = "Please choose a file to upload.";
return View();
}
在这个例子中,我们将HttpPostedFileBase类型的参数命名为“file”,这个参数的值就是从HTML表单中上传的文件对象。如果文件存在并且大小不为0,则可以将其保存到服务器上,并将文件信息保存到数据库中。
最后,为了在视图中显示已上传的文件,您可以从数据库中检索FileInfo对象,并将其传递给视图模型。例如:
public ActionResult FileList()
{
var fileInfos = dbContext.FileInfos.ToList();
return View(fileInfos);
}
在这个例子