实现文件上传和下载功能是很常见的需求,在C#中实现这样的功能并不困难。
上传文件
实现过程
选择一个合适的 form
布局,使得用户可以方便地选择文件,并设计好交互流程。
在后台代码中,需要通过 HttpPostedFileBase
类型接收表单上传的文件。可以通过以下代码来实现文件上传的操作:
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
file.SaveAs(path);
}
return RedirectToAction("Index");
}
代码中的 HttpPostedFileBase
为ASP.NET MVC框架中的上传文件数据类型,通过判断文件是否为空以及大小是否大于0来确认上传的文件是否有效。接着通过 Path.GetFileName()
方法和 Server.MapPath()
方法生成保存路径。最后使用 SaveAs()
方法保存文件即可。
示例说明
以下是一个示例代码,其中包含了从表单上传文件、创建文件并保存至磁盘、用户拒绝上传操作等实例:
[HttpPost]
public ActionResult FileUpload(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
try
{
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"),
Path.GetFileName(file.FileName));
file.SaveAs(path);
ViewBag.Message = "File uploaded successfully";
}
catch (Exception ex)
{
ViewBag.Message = "Error: " + ex.Message.ToString();
}
}
else
{
ViewBag.Message = "You have not specified a file.";
}
return View();
}
下载文件
实现过程
查找已经上传的文件并获取该文件的绝对路径。可以使用 FileResult()
方法,该方法可以将文件返回给客户端:
public FileResult Download(string fileName)
{
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
return File(path, "application/force-download", Path.GetFileName(path));
}
该代码将指定文件路径,文件类型、以及文件名传递给 File()
方法作为参数,返回一个文件下载流,当客户端请求下载时将自动下载文件。
示例说明
以下代码给出了如何进行文件下载的实例代码,其中通过文件名参数获取已上传文件的绝对路径并且将文件返回:
public FileResult Download(string fileName)
{
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
return File(path, "application/force-download", Path.GetFileName(path));
}
总结
以上,就是实现文件上传和下载的完整攻略,包括实现过程和示例代码。在我们进行开发过程中,还需要注意一些安全性问题,如文件扩展名白名单验证等等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# 实现文件上传下载功能的实例代码 - Python技术站