.net core 文件下载,.net core excel下载 电脑版发表于:2019/3/25 17:30 **代码如下,非常简单实用:** ``` private readonly IWebHostEnvironment _webHostEnvironment; public PhoneController(IWebHostEnvironment webHostEnvironment) { _webHostEnvironment = webHostEnvironment; } public IActionResult DownloadFile() { var filePath = "/app/tnblog_beta.apk"; var fileName = "tnblog_beta.apk"; /* FileStream fs = new FileStream(_webHostEnvironment.WebRootPath + filePath, FileMode.OpenOrCreate); fs.Close();*/ return File(new FileStream(_webHostEnvironment.WebRootPath + filePath, FileMode.Open), "application/octet-stream", fileName); } ``` 还有这种路径写法: ``` /// <summary> /// 模板下载 /// </summary> /// <returns></returns> public FileResult DownloadTemplate() { string baseDir = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot"); string filePath = baseDir + "/template/filetemplate.xls"; string fileName = "filetemplate.xls"; return File(new FileStream(filePath, FileMode.Open), "application/octet-stream", fileName); } ``` **使用response来输出已经存在了的附件文件** ``` using (FileStream fs = new FileStream(filePath, FileMode.Open)) { byte[] bytes = new byte[(int)fs.Length]; fs.Read(bytes, 0, bytes.Length); fs.Close(); //Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8"); Response.ContentType = "application/octet-stream;charset=UTF-8";; string newName = Guid.NewGuid().ToString().Replace("-", ""); Response.Headers.Add("Content-Disposition", "attachment; filename=" + newName + "." + tnblogResourceDTO.Suffix); Response.BodyWriter.WriteAsync(bytes); Response.BodyWriter.FlushAsync(); } ``` **也可以使用response来输出附件文件,例如下载内存中构建的excel表格** ``` //把内存流做为文件下载中转 MemoryStream memoryStream = new MemoryStream(); workbook.Write(memoryStream); //Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8"); Response.ContentType = "application/octet-stream;charset=UTF-8"; ; string newName = Guid.NewGuid().ToString().Replace("-", ""); Response.Headers.Add("Content-Disposition", "attachment;filename=" + WebUtility.UrlEncode("用户信息表.xls")); //Response.Headers.Add("Content-Disposition", "attachment;filename=用户信息表.xls"); Response.BodyWriter.WriteAsync(memoryStream.ToArray()); Response.BodyWriter.FlushAsync(); ``` 这里下载名称做了一下url编码不然遇到中文下载会报错:InvalidOperationException: Invalid non-ASCII or control character in header: 0x7528