AWS Elastic Beanstalk。在哪里保存用户上传的文件?

时间:2016-10-02 21:07:35

标签: php amazon-s3 amazon-ec2 elastic-beanstalk

我将旧网站移至AWS。

我已经制作了几个资产,如: - 我的网站显示在我的域名下。 - 我的SQL数据库在线,可以从我的本地机器访问。 - 我启动了一个Linux AMI实例和一个Elastic Beanstalk php环境来运行我的php应用程序,它也可以运行。

现在我的php应用程序应该偶尔读取和写入我的网站访问者上传的一些图像文件(通过javascript和php脚本)。

在我的旧网站托管上很容易。 php脚本在我的http域可访问的给定目录中读取/写入用户的图像文件。

在AWS上,我尝试在Elasticbeanstalk Linux存储桶(我找到我的php app zip文件)的根目录上手动上传图像文件,例如" usersimages / image.png"但现在如果我输入http://example.com/usersimages/image.png,我会收到404错误。

所以,一切都只能在不透明的php应用程序中运行,而不是在外部。我不能在php zip文件中包含这些用户的文件。目录" usersimages"包含动态数据,独立于我的php应用程序。

所以我的问题是:在哪里以及如何读/写用户的图像文件?

1 个答案:

答案 0 :(得分:1)

将用户的图像直接上传到S3可能是最好的。这样它就可以使它们脱离您的Beanstalk实例,并且可以轻松地将图像包含在您的页面中。使用名为pre-signed upload URLs的方法完成上传。您可以在PHP中创建预签名URL,并使用HTML表单中的URL上载文件。一个例子是Client side uploads to s3, with pre-signed upload form (PHP/JS)