23.2、文件上传下载
文件上传下载也是应用系统和用户交互必备功能。
文件下载
代码如下:
[HttpGet]
[Route("~/api/sales/FileDownload")]
public IActionResult FileDownload(string path, string fileName)
{
string filePath = Path.GetFullPath("~/temp/").Replace("~\\", "") + path;
return new FileStreamResult(new FileStream(filePath, FileMode.Open), "application/octet-stream") { FileDownloadName = fileName };
}文件上传
支持单文件、多文件上传,由于上传文件是耗时操作,所以尽量采用异步上传方式。代码如下:
public async Task<IActionResult> UploadFileAsync(List<IFormFile> files)
{
long size = files.Sum(f => f.Length);
foreach (var formFile in files)
{
if (formFile.Length > 0)
{
var filePath = Path.GetTempFileName(); // 可以替代为你需要存储的真实路径
using (var stream = System.IO.File.Create(filePath))
{
await formFile.CopyToAsync(stream);
}
}
}
return Ok(new { count = files.Count, size });
}前端Angular下载示例
Get请求
只需要通过 <a href='下载地址'>下载</a> 即可。
Post请求
文件上传下载推荐方式
通常我们将用户上传或提供下载的资源放在和源码同一服务器,这样用户下载和上传时会占用服务器内存资源,导致系统性能下降,所以我们通常将静态资源统一放在一台单独文件服务器中。由于自己托管文件服务器成本较高,所以推荐采用国内的 七牛云 或 阿里云的 OSS 对象存储。
最后更新于
这有帮助吗?