首页 > 解决方案 > 如何在 Azure 存储中查找文件扩展名?

问题描述

如果文件名中没有扩展名,那么我无法contentType创建FileStreamResult. 例子:

byte[] byteFile = await someDirectory.GetFileContentAsync(fileName);    
string contentType; 
new FileExtensionContentTypeProvider().TryGetContentType(fileName, out contentType); // fileName without extension
return (byteFile, contentType); // contentType == null

有没有办法不从名称中获取扩展名?

标签: asp.net.netazure

解决方案


查看 的代码FileExtensionContentTypeProvider,有一个预定义的文件扩展名列表及其对应的 mime 类型。如果文件扩展名不在该列表中,则TryGetContentType方法将返回。null

如果你得到一个没有文件扩展名的文件,一种可能的方法是通过读取它的元数据来找到那种文件,但这真的很复杂。例如,读取文件内容,您可以了解文件是否为图像以及是否为 png 类型。但是您需要编写代码来识别每种类型的图像(png、bmp、gif 等)。

一种更简单的方法是将null内容类型推断为默认内容类型。对于 Azure 存储,它将是application/octet-stream.


推荐阅读