using Microsoft.AspNetCore.Mvc; using System.IO; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Authorization; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.StaticFiles; using System.Threading.Tasks; namespace FCore.Saas.SCM.WebAPI.Areas.Files { public class FilesController : BaseController { private readonly IHostingEnvironment _hostingEnvironment; private readonly ILogger<FilesController> _logger; public FilesController(IHostingEnvironment hostingEnvironment, ILogger<FilesController> logger) { _hostingEnvironment = hostingEnvironment; _logger = logger; } [HttpPost, HttpGet, AllowAnonymous] public async Task<IActionResult> DownloadFile(string businessDirectoryName, string fileFullName) { string filePath = _hostingEnvironment.ContentRootPath + "\\Files\\Upload\\" + businessDirectoryName + "\\" + fileFullName; if (!System.IO.File.Exists(filePath)) { return LocalRedirect("/Files/NotFind"); } var memory = new MemoryStream(); using (var stream = new FileStream(filePath, FileMode.Open)) { await stream.CopyToAsync(memory); } memory.Position = 0; return File(memory, GetContentType(filePath), Path.GetFileName(filePath)); } private string GetContentType(string path) { var provider = new FileExtensionContentTypeProvider(); string contentType; if (!provider.TryGetContentType(path, out contentType)) { contentType = "application/octet-stream"; } return contentType; } } }
文件:
请求地址
https://localhost:44359/api/Files/Files/DownloadFile?businessDirectoryName=DownloadTemplate&fileFullName=SaasSCM批量新增商品模板.xlsx
标签:Files,Web,ASP,string,Core,filePath,using,hostingEnvironment,Microsoft From: https://www.cnblogs.com/nanxixi/p/17970289