.NET MVC基础之返回文件类型📄
前言
上一篇文章讲了基础的返回类型,这篇文章讲解如何返回文件类型给浏览器下载。
系列文章
- .NET MVC基础之页面传值方式:https://pljzy.top/blog/post/83ab84c9ab7a8d5f.html
- 通过图片流来返回图片: https://pljzy.top/blog/post/ff1ee0f45a6f3ad9.html
返回类型介绍
在返回文件之前,要知道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字节数组。
效果展示
总结
这里只是简单的介绍,有任何问题欢迎评论交流~