如何制作ASP.NET MVC文件上传教程(一)?

2026-03-31 02:153阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计691个文字,预计阅读时间需要3分钟。

这一节我们来探讨在MVC中如何进行文件上传。我们将逐步深入,一起来了解一下。

首先,我们添加一个文件上传功能到默认创建的项目中的Home控制器。具体代码如下:

csharppublic ActionResult UploadFile(){ return View();}

以上代码创建了一个名为`UploadFile`的方法,该方法返回一个视图,用于展示文件上传的表单。

这一节我们来讲讲在MVC中如何进行文件的上传,我们逐步深入,一起来看看。

Upload File(一)
我们在默认创建的项目中的Home控制器下添加如下:

public ActionResult UploadFile() { return View(); } [HttpPost] public ActionResult UploadFile(HttpPostedFileBase file) { var fileName = file.FileName; var filePath = Server.MapPath(string.Format("~/{0}", "File")); file.SaveAs(Path.Combine(filePath, fileName)); return View(); }

在 UploadFile 视图中添加上如下:

<form action="/Home/UploadFile" method="post" enctype="multipart/form-data"> <input type="file" name="file" /><br /> <input type="submit" value="提交" /> </form>

有关视图中我们就不必多说,只需明白如下两点:

(1)在后台利用HttpPostedFileBase来接收上传文件,该类为一个抽象类,但在ASP.NET Web Form却没有此类,此类的出现是为了更好的进行单元测试。

(2)在视图中文件类型的name要和后台接收文件的参数一致。

接下来我们进行演示看看结果:

上述我们简单的上传了一个Excel文件,下面我们通过强类型视图以及模型验证来强化上传。

Upload File(二)
我们创建如下BlogModel类:

public class BlogModel { [Display(Name = "博客名称")] [Required(ErrorMessage = "请输入你的博客名称!")] public string BlogName { get; set; } [Display(Name = "博客地址")] [Required(ErrorMessage = "请输入你的博客地址!")] public string BlogAddress { get; set; } [Display(Name = "博客图片")] [Required(ErrorMessage = "请上传你的博客图片!")] [ValidateFile] public HttpPostedFileBase BlogPhoto { get; set; } }

上述未有验证文件的特性,只能自定义文件特性,如下:

public class ValidateFileAttribute : ValidationAttribute { public override bool IsValid(object value) { int MaxContentLength = 1024 * 1024 * 4; string[] AllowedFileExtensions = new string[] { ".jpg", ".gif", ".png", ".pdf" }; var file = value as HttpPostedFileBase; if (file == null) return false; else if (!AllowedFileExtensions.Contains(file.FileName.Substring(file.FileName.LastIndexOf('.')))) { ErrorMessage = "请上传你的博客图片类型: " + string.Join(", ", AllowedFileExtensions); return false; } else if (file.ContentLength > MaxContentLength) { ErrorMessage = "上传图片过大,不能超过4兆 : " + (MaxContentLength / 1024).ToString() + "MB"; return false; } else return true; } }

我们可以任意设置上传的文件大小,我们设置为40兆,在配置文件中我们知道 maxRequestLength = 4096 默认是4兆,当然我们可以改变其默认设置。

<www.cnblogs.com/CreateMyself/p/5414200.html

以上就是本文的全部内容,希望对大家的学习有所帮助。

本文共计691个文字,预计阅读时间需要3分钟。

这一节我们来探讨在MVC中如何进行文件上传。我们将逐步深入,一起来了解一下。

首先,我们添加一个文件上传功能到默认创建的项目中的Home控制器。具体代码如下:

csharppublic ActionResult UploadFile(){ return View();}

以上代码创建了一个名为`UploadFile`的方法,该方法返回一个视图,用于展示文件上传的表单。

这一节我们来讲讲在MVC中如何进行文件的上传,我们逐步深入,一起来看看。

Upload File(一)
我们在默认创建的项目中的Home控制器下添加如下:

public ActionResult UploadFile() { return View(); } [HttpPost] public ActionResult UploadFile(HttpPostedFileBase file) { var fileName = file.FileName; var filePath = Server.MapPath(string.Format("~/{0}", "File")); file.SaveAs(Path.Combine(filePath, fileName)); return View(); }

在 UploadFile 视图中添加上如下:

<form action="/Home/UploadFile" method="post" enctype="multipart/form-data"> <input type="file" name="file" /><br /> <input type="submit" value="提交" /> </form>

有关视图中我们就不必多说,只需明白如下两点:

(1)在后台利用HttpPostedFileBase来接收上传文件,该类为一个抽象类,但在ASP.NET Web Form却没有此类,此类的出现是为了更好的进行单元测试。

(2)在视图中文件类型的name要和后台接收文件的参数一致。

接下来我们进行演示看看结果:

上述我们简单的上传了一个Excel文件,下面我们通过强类型视图以及模型验证来强化上传。

Upload File(二)
我们创建如下BlogModel类:

public class BlogModel { [Display(Name = "博客名称")] [Required(ErrorMessage = "请输入你的博客名称!")] public string BlogName { get; set; } [Display(Name = "博客地址")] [Required(ErrorMessage = "请输入你的博客地址!")] public string BlogAddress { get; set; } [Display(Name = "博客图片")] [Required(ErrorMessage = "请上传你的博客图片!")] [ValidateFile] public HttpPostedFileBase BlogPhoto { get; set; } }

上述未有验证文件的特性,只能自定义文件特性,如下:

public class ValidateFileAttribute : ValidationAttribute { public override bool IsValid(object value) { int MaxContentLength = 1024 * 1024 * 4; string[] AllowedFileExtensions = new string[] { ".jpg", ".gif", ".png", ".pdf" }; var file = value as HttpPostedFileBase; if (file == null) return false; else if (!AllowedFileExtensions.Contains(file.FileName.Substring(file.FileName.LastIndexOf('.')))) { ErrorMessage = "请上传你的博客图片类型: " + string.Join(", ", AllowedFileExtensions); return false; } else if (file.ContentLength > MaxContentLength) { ErrorMessage = "上传图片过大,不能超过4兆 : " + (MaxContentLength / 1024).ToString() + "MB"; return false; } else return true; } }

我们可以任意设置上传的文件大小,我们设置为40兆,在配置文件中我们知道 maxRequestLength = 4096 默认是4兆,当然我们可以改变其默认设置。

<www.cnblogs.com/CreateMyself/p/5414200.html

以上就是本文的全部内容,希望对大家的学习有所帮助。