效果

新增【FileController.cs】
/// <summary>
/// 文件控制器
/// </summary>
[Route("api/[controller]/[action]")]
[ApiController]
//[Authorize]
public class FileController : ControllerBase
{
/// <summary>
/// 资源文件夹
/// </summary>
private string _filePath = Path.Combine(Directory.GetCurrentDirectory(), "Uploads");
/// <summary>
/// 文件下载
/// </summary>
/// <param name="fileName">文件名称</param>
/// <returns></returns>
[HttpGet]
public async Task<ActionResult> Download(string fileName)
{
HttpResponseMessage response = new HttpResponseMessage();
var downloadFileName = Path.Combine(_filePath, fileName); ;
Console.WriteLine(downloadFileName);
// 判断文件是否存在
if (!System.IO.File.Exists(downloadFileName))
{
response.StatusCode = HttpStatusCode.NotFound;
return NotFound();
}
var memory = new MemoryStream();
using (var stream2 = new FileStream(downloadFileName, FileMode.Open))
{
await stream2.CopyToAsync(memory);
}
memory.Position = 0;
var fileResult = File(memory, "application/octet-stream");
fileResult.FileDownloadName = fileName;
return fileResult; // 返回一个文件流
}
/// <summary>
/// 上传文件
/// </summary>
/// <param name="file"></param>
/// <returns></returns>
[HttpPost]
public async Task<ActionResult> Upload(IFormFile file)
{
if (file == null || file.Length == 0)
return BadRequest("文件无效");
// 创建文件夹,如果它不存在的话
if (!Directory.Exists(_filePath))
{
Directory.CreateDirectory(_filePath);
}
var path= Path.Combine(_filePath, file.FileName);
using (var stream = new FileStream(path, FileMode.Create))
{
await file.CopyToAsync(stream);
}
return Ok("文件上传成功");
}