Amazon S3 获取没有扩展名的文件
Posted
技术标签:
【中文标题】Amazon S3 获取没有扩展名的文件【英文标题】:Amazon S3 get file without extension 【发布时间】:2016-12-05 05:32:40 【问题描述】:我正在通过 java Amazon TransferManager 上传多张具有不同扩展名(jpg、png...等)的图片。
例如:picture1.png、picture2.jpg。 我想提供不带扩展名的内容,对文件夹/图片1 的获取请求将返回图片1.png。
客户端是一个angularJs应用
以前,我在 EC2 上托管所有这些图片并通过 APACHE 和选项 Multiviews 提供服务,我们可以用 AmazonS3 做类似的事情吗?
谢谢
【问题讨论】:
【参考方案1】:这样不行。 S3 不会对对象键的任何部分(路径+文件名)赋予特殊含义,因此它没有“扩展”的概念。 (从技术上讲,S3 也没有真正的“路径”概念,但在大多数情况下它的行为就好像它确实如此)。
当然,在网络上,文件扩展名无论如何都应该没有意义——声明的Content-Type
应该是唯一重要的东西,所以...从技术上讲...不需要保存 S3 中的对象与他们的扩展。
将文件保存到不带扩展名的 S3,正确设置 Content-Type
,您将获得您正在寻找的行为。
【讨论】:
迈克尔,感谢您清晰准确的回答。我确实搜索了更多,最终找到了相同的解决方案。【参考方案2】:您可以做的是像这样列出 aws s3 文件夹中的所有文件
const files = await s3Bucket.listObjects(params).promise()
您可以浏览每个文件并将其与您的文档和您想要做的事情相匹配。
files.Contents.forEach(function(obj,index)
obj.Key //
)
您现在可以使用此 obj.Key 访问您的文件。 obj.Key 是带有扩展名的文件的完整路径。您可以搜索此字符串或将其与您的文件匹配,然后获取文件。
【讨论】:
以上是关于Amazon S3 获取没有扩展名的文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 AWS SDK for PHP 上传的 Amazon S3 文件总是“application/octet-stream”?
有没有人达到过 Amazon S3 存储桶的读取或写入上限?
有没有办法为 kinesis firehose 保存到 s3 的文件指定文件扩展名