一直很好奇服务端是怎么返回一个文件的,所以搜了一些资料。
其实最主要的就是文件流和MIME-Type。
全部可以用File
解决:
[HttpGet("file")]
public FileResult GetFile()
{
var file = @"F:\TGS_F2.tif";
var stream = System.IO.File.OpenRead(file);
new FileExtensionContentTypeProvider().TryGetContentType(file, out var contentType);
return File(stream, contentType, Path.GetFileName(file));
}
与其他文档不一样的是,获取MIME-Type不是用的system.Web
命名空间下的MimeMapping.GetMapping
方法,查看msdn
文档可知,该方法仅适用于.net framework <= 4.8
,所以要采用new FileExtensionContentTypeProvider().TryGetContentType(file, out var contentType)
方法。