2013-08-02 52 views
1

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

回答

4

可以使用您指定的任何场景将文件上载到S3。

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

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

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

你可以在这里的第二个方案的详细信息:

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

即使它不是PHP具体,它说明了如何生成策略,以及如何形成的POST请求。

您也可以通过API文档阅读POST请求获得更多的信息:

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

编辑:PHP的官方AWS SDK包含了这样一个辅助类:http://docs.aws.amazon.com/aws-sdk-php-2/latest/class-Aws.S3.Model.PostObject.html

+0

谢谢!正是我需要知道的。 –

+0

了不起的信息!但作为无能的程序员,你是否知道我可以看到的现有实现?任何开源项目? – Paolo