我在网络主机上有一个网页,图像存储在AmazonS3上。我希望php能够通过我的网页以zip文件的形式从AmazonS3下载多个图像。
我的选择是什么?什么是最好的?
据我所知,在S3上压缩文件是不可能的。我可以使用亚马逊lambda吗?
我遇到的最好的解决方案。
- 用户在我的网站上选择他们想要下载的图像
-
我从网络主机上的数据库中获取文件名,并下载图像从S3到我的web主机上的临时目录。
-
在临时目录中创建一个zip文件,并发送一个链接给用户。一段时间后,我清理了我的网络主机上的临时目录(使用脚本)。
但如果有一种方法不经过我的主机来创建和下载zip文件,那就太好了。
AWS S3是"基本构建块",因此它不支持像将多个对象压缩在一起这样的功能。
您已经想出了一个很好的方法来实现这一点,尽管您可以将对象流式传输到zip文件中,而不是下载它们。EC2实例可以非常快速地完成,因为它们往往具有到S3的快速连接。
Lambda不适用于此,因为它只有在将对象放入S3存储桶时才会触发。你的做法正好相反。
在GitHub上找到了一个非常酷的解决方案:
github
这就是AWS lamba,它允许在s3上组合多个文件,将它们打包到zip归档,上传到s3,然后允许下载归档。