"ASP.NET MVC 文件上传教程(一)
在ASP.NET MVC框架中,文件上传是一项常见的功能,本教程将引导你逐步了解如何实现这一操作。首先,我们需要在默认的项目中,于Home控制器下创建一个名为`UploadFile`的动作方法。这个方法包括一个HTTP GET和一个HTTP POST版本。GET方法简单地返回一个视图,而POST方法处理文件上传并保存到服务器。
GET方法的代码如下:
```csharp
public ActionResult UploadFile()
{
return View();
}
```
这个方法仅仅返回一个空的视图,用于展示文件上传的表单。
POST方法如下:
```csharp
[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();
}
```
在这个POST方法中,我们使用`HttpPostedFileBase`类型的参数`file`来接收上传的文件。`file.FileName`获取文件名,`Server.MapPath`结合路径字符串得到服务器上的实际保存路径,然后使用`SaveAs`方法保存文件。最后,返回视图,通常用于显示确认信息或者上传后的操作。
在视图(View)部分,我们需要创建一个HTML表单,允许用户选择文件并提交:
```html
<form action="/Home/UploadFile" method="post" enctype="multipart/form-data">
<input type="file" name="file" /><br />
<input type="submit" value="提交" />
</form>
```
关键点在于`enctype="multipart/form-data"`,这是上传文件时必须的表单编码类型。同时,文件输入字段的`name`属性应与控制器方法中的参数名`file`一致,以便正确绑定。
接下来,我们将增强文件上传的功能,引入模型验证。创建一个名为`BlogModel`的类:
```csharp
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="请输入你的博客图片!")]
public HttpPostedFileBase BlogImage { get; set; }
}
```
现在,我们的视图可以使用这个强类型模型,并在表单中添加验证规则。当用户尝试上传文件时,模型验证会检查博客名称和博客地址是否为空。如果验证失败,错误消息将显示给用户。
通过这种方式,你可以实现一个更健壮的文件上传系统,不仅处理文件上传,还确保了用户输入的其他信息的完整性。这只是一个基础的示例,实际应用中可能需要考虑更多因素,如文件大小限制、文件类型检查、异常处理等。继续学习下一节,将深入了解更多关于ASP.NET MVC文件上传的高级技巧。"