【问题标题】:AWS Elastic Beanstalk. Where to save files uploaded by the users?AWS 弹性豆茎。用户上传的文件保存在哪里?
【发布时间】: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 应用程序。

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

【问题讨论】:

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


    【解决方案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 的方法
    猜你喜欢
    • 2014-12-22
    • 1970-01-01
    • 2019-04-21
    • 2018-02-25
    • 2017-09-01
    • 2015-03-12
    • 1970-01-01
    • 2016-01-13
    • 2015-04-02
    相关资源
    最近更新 更多