.NET 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字节数组。

效果展示

1

20231210203750

总结

这里只是简单的介绍,有任何问题欢迎评论交流~