下面是详细讲解“ASP.NET MVC文件上传教程(二)”的完整攻略:
ASP.NET MVC文件上传教程(二)
一、前言
在Web开发中,文件上传是一个非常常见的需求,比如我们需要上传头像、附件、图片等等,这时候就需要用到文件上传功能。ASP.NET MVC框架本身提供了文件上传的功能,我们可以轻松实现文件上传。
在上一篇教程中,我们讲解了如何生成表单并获取文件信息,这篇教程将会讲解如何把文件保存到服务器上。
二、示例
1. 将文件保存到本地服务器
下面是将上传的文件保存到服务器上的代码:
[HttpPost]
public ActionResult UploadFile(HttpPostedFileBase file)
{
if (file != null)
{
string fileName = Path.GetFileName(file.FileName);
string path = Path.Combine(Server.MapPath("~/Uploads/"), fileName);
file.SaveAs(path);
}
return RedirectToAction("Index");
}
代码中,我们首先判断上传的文件是否为空,如果不为空,我们获取文件名,通过Server.MapPath
方法将路径转化为绝对路径,并将上传的文件保存到服务器上。
2. 将文件保存到云存储中
在现代Web开发中,云存储变得越来越流行。下面是将上传的文件保存到Azure云存储上的代码:
[HttpPost]
public ActionResult UploadToAzure(HttpPostedFileBase file)
{
if (file != null)
{
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
ConfigurationManager.ConnectionStrings["StorageConnection"].ConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// 获取Blob容器
CloudBlobContainer blobContainer = blobClient.GetContainerReference("uploads");
string fileName = Path.GetFileName(file.FileName);
CloudBlockBlob blockBlob = blobContainer.GetBlockBlobReference(fileName);
// 上传Blob
blockBlob.UploadFromStream(file.InputStream);
return RedirectToAction("Index");
}
return View();
}
代码中,我们首先通过CloudStorageAccount.Parse
方法将连接字符串转换成CloudStorageAccount
类型的实例对象,然后通过该实例对象的CreateCloudBlobClient
方法获取CloudBlobClient
对象。接着我们获取Blob容器,通过文件名获取CloudBlockBlob
对象,并用其UploadFromStream
方法将文件上传到Azure云存储中。
三、总结
通过本篇教程的讲解,我们可以看到文件上传不仅仅是简单上传文件到服务器上,还可以上传文件到云存储中。这样做不仅可以减少服务器存储的负担,还可以提高文件的访问速度,使网站的性能更加流畅。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET MVC文件上传教程(二) - Python技术站