2013-08-02 78 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