AWS 弹性豆茎。用户上传的文件保存在哪里?
Posted
技术标签:
【中文标题】AWS 弹性豆茎。用户上传的文件保存在哪里?【英文标题】:AWS Elastic Beanstalk. Where to save files uploaded by the users? 【发布时间】:2017-02-10 19:32:39 【问题描述】:我将旧网站移至 AWS。
我已经使几个资产工作,如: - 我的网站显示在我的域下。 - 我的 SQL 数据库在线,可以从我的本地计算机访问。 - 我启动了一个 Linux AMI 实例和一个 Elastic Beanstalk php 环境来运行我的 php 应用程序,它们也可以工作。
现在我的 php 应用程序应该偶尔读取和写入我的网站访问者上传的一些图像文件(通过 javascript 和 php 脚本)。
在我的旧虚拟主机上,这很容易。 php 脚本在可从我的 http 域访问的给定目录中读取/写入用户的图像文件。
在 AWS 上,我尝试在 Elasticbeanstalk Linux 存储桶的根目录(我在其中找到我的 php 应用程序 zip 文件)手动上传图像文件,例如"usersimages/image.png" 但现在如果我输入 http://example.com/usersimages/image.png 我会收到 404 错误。
所以,一切都只能在不透明的 php 应用程序内工作,而不是在外面。而且我不能在 php zip 文件中包含这些用户的文件。 “usersimages”目录包含动态数据,独立于我的 php 应用程序。
所以我的问题是:在哪里以及如何读取/写入用户的图像文件?
【问题讨论】:
【参考方案1】:最好将用户的图像直接上传到 S3。这样,它就可以让它们远离您的 Beanstalk 实例,并且您可以轻松地将图像包含在您的页面中。上传是使用称为pre-signed upload URLs 的方法完成的。您可以在 PHP 中创建预签名 URL,并使用 html 表单中的 URL 上传文件。一个例子是Client side uploads to s3, with pre-signed upload form (PHP/JS)。
【讨论】:
我可以在本地测试称为预签名上传 URL 的方法吗?另外,我应该压缩整个项目并一直上传/部署它吗?如何编辑远程服务器上的 php 文件?在我当前的主机上,我使用 Transmit 编辑/保存远程 php 文件。我可以在几秒钟内看到结果。在这里,我永远不会结束。 我按照你说的解决了这个问题。谢谢你。我将动态文件移至新的 S3 存储桶。我找到了使用 AWS 方法 s3://bucketName 指向这些公共 URL 的方法以上是关于AWS 弹性豆茎。用户上传的文件保存在哪里?的主要内容,如果未能解决你的问题,请参考以下文章
AWS 弹性豆茎。仅在新实例上或手动执行 .ebextensions 命令