asp.net - 如何在 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
有没有办法不从名称中获取扩展名?
解决方案
查看 的代码FileExtensionContentTypeProvider
,有一个预定义的文件扩展名列表及其对应的 mime 类型。如果文件扩展名不在该列表中,则TryGetContentType
方法将返回。null
如果你得到一个没有文件扩展名的文件,一种可能的方法是通过读取它的元数据来找到那种文件,但这真的很复杂。例如,读取文件内容,您可以了解文件是否为图像以及是否为 png 类型。但是您需要编写代码来识别每种类型的图像(png、bmp、gif 等)。
一种更简单的方法是将null
内容类型推断为默认内容类型。对于 Azure 存储,它将是application/octet-stream
.
推荐阅读
- python - 如何仅列出最小值
- c++ - Mongocxx如何查询文档数组
- javascript - React fullCalendar - 交互不起作用
- javascript - 使用 useState 时收到警告
- c - 为什么指针 s 的地址和我们访问未命名数组的第一个元素时一样?
- angular - RxJS 仅从数组中获取更改的对象
- javascript - 如何等待一个函数完成然后在 ES6 中调用另一个函数?
- git - 如何在不向上游推送的情况下保留本地版本并在 Git 上提交更改?
- circleci - Circle Ci的结账是做什么的?
- android - 如何通过反射调用 kotlin 方法?