我正在通过 java Amazon TransferManager 上传多张具有不同扩展名(jpg、png...等)的图片。
例如:图片1.png、图片2.jpg。我想提供没有扩展名的内容,对文件夹/图片1的获取请求将返回图片1.png。
客户端是一个 angularJs 应用程序
以前,我在 EC2 上托管所有这些图片并通过APACHE使用Multiviews选项提供服务,我们可以用 AmazonS3 做类似的事情吗?
谢谢
我正在通过 java Amazon TransferManager 上传多张具有不同扩展名(jpg、png...等)的图片。
例如:图片1.png、图片2.jpg。我想提供没有扩展名的内容,对文件夹/图片1的获取请求将返回图片1.png。
客户端是一个 angularJs 应用程序
以前,我在 EC2 上托管所有这些图片并通过APACHE使用Multiviews选项提供服务,我们可以用 AmazonS3 做类似的事情吗?
谢谢
它不是那样工作的。S3 不会对对象键(路径+文件名)的任何部分赋予特殊含义,因此它没有“扩展”的概念。(从技术上讲,S3 也没有真正的“路径”概念,但在大多数情况下它的行为就像它一样)。
当然,在网络上,文件扩展名无论如何都应该没有意义——Content-Type
声明应该是唯一重要的事情,所以......从技术上讲......S3中的对象不需要与它们的扩展名一起保存。
将文件保存到没有扩展名的 S3,Content-Type
正确设置,您将获得您正在寻找的行为。
您可以做的是列出 aws s3 文件夹中的所有文件,如下所示
const files = await s3Bucket.listObjects(params).promise()
您可以浏览每个文件并将其与您的文档和您想要执行的操作相匹配。
files.Contents.forEach(function(obj,index){
obj.Key //
})
您现在可以使用此 obj.Key 来访问您的文件。obj.Key 是带有扩展名的文件的完整路径。您可以搜索此字符串或将其与您的文件匹配,然后获取该文件。