- A+
所属分类:.NET技术
.NET Core MVC基础之返回文件类型?
前言
上一篇文章讲了基础的返回类型,这篇文章讲解如何返回文件类型给浏览器下载。
系列文章
返回类型介绍
在返回文件之前,要知道MIME 类型,这里介绍常用的几种:
text/plain
:纯文本文件text/html
:HTML 文件text/css
:CSS 文件application/json
:JSON 数据application/xml
:XML 数据application/pdf
:PDF 文件image/jpeg
:JPEG 图像文件image/png
:PNG 图像文件audio/mpeg
:MPEG 音频文件video/mp4
:MP4 视频文件
代码实现
我这里这里展示返回图片类型。
返回图片
<a href="/Home/DownloadFile">FileResult返回文件</a>
返回FileStreamResult
对象:适用于文件较大并且以流的方式逐块读取文件
public IActionResult DownloadFile() { string filePath = Path.Combine(_webHostEnvironment.WebRootPath,"1.jpg"); string contentType = "image/jpeg"; FileStream fileStream = new FileStream(filePath, FileMode.Open); return new FileStreamResult(fileStream, contentType) { FileDownloadName = "1.jpg" }; }
返回 FileContentResult
对象:将文件内容作为字节数组直接返回给客户端。适用于文件较小且可以完全加载到内存中的情况。
public IActionResult DownloadFile() { string filePath = Path.Combine(_webHostEnvironment.WebRootPath, "1.jpg"); byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); string contentType = "image/jpeg"; return new FileContentResult(fileBytes, contentType) { FileDownloadName = "1.jpg" }; }
直接使用File方法
public IActionResult DownloadFile() { string filePath = Path.Combine(_webHostEnvironment.WebRootPath, "1.jpg"); byte[] fileBytes = System.IO.File.ReadAllBytes(filePath); string contentType = "image/jpeg"; return File(fileBytes, contentType,"1.jpg"); }
public IActionResult DownloadFile() { string filePath = Path.Combine(_webHostEnvironment.WebRootPath, "1.jpg"); FileStream fileStream = new FileStream(filePath, FileMode.Open); string contentType = "image/jpeg"; return File(fileStream, contentType,"1.jpg"); }
总的来说,返回文件可以通过返回文件流,也可以通过返回byte字节数组。
效果展示
总结
这里只是简单的介绍,有任何问题欢迎评论交流~