如何在AWS S3托管的文件中确定没有扩展名的文件类型?

5
作为一个例子,我目前正在使用表格直接上传项目到S3存储桶。在测试时,我没有指定任何预期的文件名或扩展名。 我上传了一个.png文件,生成了这个直接链接:

https://s3-us-west-2.amazonaws.com/easyhighlighting2/2015-07-271438019663927upload94788

当我将其放置在img标签中时,它可以在网页上正确显示。
我的问题是,没有扩展名,浏览器怎么知道正在加载的文件类型?在存储桶内,该文件的元数据甚至都没有填写。
有没有办法通过编程获取该文件的扩展名?
我准备尝试任何可用的客户端方法;我的服务器端语言是 ColdFusion,这在某种程度上是有限制的,但我也愿意听取建议。
2个回答

5

好的,经过更深入的挖掘,我发现自CF10以来增加了一种检索文件类型的方法;这也可以解释为什么缺乏相关的文档。

答案就在于FileGetMimeType函数中。

<cfset someVar = "https://s3-us-west-2.amazonaws.com/easyhighlighting2/2015-07-271438019663927upload94788">
<cfset FileType = FileGetMimeType(someVar)>
<cfoutput>#FileType#</cfoutput>

这段代码将输出image/png,对于我迄今测试过的每种文件类型都是正确的。我很惊讶这种问题以前没有出现过,但这似乎是最好的答案,至少适用于CFML用户。
编辑:
ColdFusion通过读取文件内容或信任其扩展名来完成此操作。在此函数中使用了一个隐式属性'strict'。如果为true,则读取文件内容。如果为false,则使用提供的扩展名。
默认值为True。
链接: https://wikidocs.adobe.com/wiki/display/coldfusionen/FileGetMimeType

3

检查Amazon S3返回的HTTP响应头中的Content-Type

例如,curl -I https://s3.amazonaws.com/path/to/file 只获取头部信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接