文件上传与下载C#实现

文件上传和下载算是 Web 开发里经常碰到的场景了。用 C#做这块其实挺顺手的,ASP.NET 的封装也比较完善,不管是单文件、多文件,还是异步,基本都能轻松搞定。

POST 求搞文件上传时,直接用Request.Files取上传的内容就行了。像这样:

HttpPostedFileBase file = Request.Files["fileInputName"];
if (file != null && file.ContentLength > 0) {
  string fileName = Path.GetFileName(file.FileName);
  string savePath = Server.MapPath("~/uploads/") + fileName;
  file.SaveAs(savePath);
}

逻辑挺直观的,先判断文件有没有,再拼个路径保存下来,上传大多数场景都够用了。

文件下载也比较简单,基本套路就是设置一下响应头,把文件内容写进去。例如:

public void DownloadFile(string filePath) {
  byte[] fileBytes = File.ReadAllBytes(filePath);
  Response.ContentType = "application/octet-stream";
  Response.AddHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath));
  Response.BinaryWrite(fileBytes);
  Response.End();
}

只要路径正确,响应也快,代码也简单。你可以自己包个下载接口,灵活点。

多文件上传用 HTML5 的multiple属性就行了。C#这边配合Request.Files遍历一下就可以搞定:

for (int i = 0; i < Request xss=removed>

一次选多个文件上传,前端体验提升不少。

安全性这块也别忽视,文件类型和大小要限制好,别让用户上传一些奇怪的东西。像.exe.bat这类能执行的文件,最好直接拦掉。路径也得用Server.MapPath,别硬编码路径。

另外,异步也值得一提。用async/await写上传下载,不光线程不卡,性能也会提升不少。如果你的接口并发量大,这一招挺好用。

,用 C#文件上传和下载,不复杂,配合 ASP.NET 的接口设计,扩展性也挺强。如果你经常做后台接口开发,这套写法值得你收藏。

rar 文件大小:562.49KB