如何通过EC2上的PHP脚本上传到S3?

时间:2013-08-02 05:22:03

标签: php file-upload amazon-web-services amazon-s3 amazon-ec2

请帮助我了解通过PHP将文件上传到Amazon S3服务器的过程。我在EC2上有一个网站,它有PHP脚本,用于从客户机器上传文件到S3服务器。我需要了解的是,文件是从客户端机器直接进入S3,还是首先上传到EC2,然后再上传到S3。如果这是第二个选项,那么我该如何优化上传,以便文件从客户端的机器直接进入S3?

1 个答案:

答案 0 :(得分:4)

可以使用您指定的任何方案将文件上传到S3。

在第一个场景中,文件上传到EC2上的PHP后端,然后通过PUT请求将其从PHP上传到S3。基本上,在这种情况下,所有上传都会通过您的EC2服务器。

第二个选项是从客户端的浏览器直接将文件上传到S3。这是通过直接对S3使用POST请求和使用PHP逻辑生成的策略来完成的,并将其附加到POST请求。此策略基本上是一组规则,允许S3接受上传(没有任何人可以上传任何内容)。

在第二种情况下,EC2上的PHP脚本只需要为上传生成有效的策略,但是上传的实际文件将直接转到S3而不通过您的EC2服务器。

您可以在此处获得有关第二种情况的更多信息:

http://aws.amazon.com/articles/1434

即使它不是特定于PHP的,它也解释了如何生成策略以及如何形成POST请求。

您还可以通过阅读POST文档的API文档获取更多信息:

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html

编辑:适用于PHP的官方AWS开发工具包包含一个辅助类,用于执行此操作:http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.S3.Model.PostObject.html