2013-08-06 67 views

回答

11

是的,但你需要某種形式的服務器後端的處理亞馬遜的API密鑰以更安全的方式,如果你要使它成爲一個公共網站的一部分。

你可以找到什麼看起來像一個完整的示例實現此這些項目:

請注意,我沒有使用,測試或審查這些項目。

序列的粗略描述如下:

  1. 用戶
    • 負載網頁
    • 選擇要上傳的文件
    • 命中上傳按鈕
  2. 頁面
    • 發送信息有關文件到服務器
  3. 服務器
    • 創建多上傳與亞馬遜API
    • 發送 「鍵」(文件名)和 「上傳ID」 回到網頁
  4. 頁面
    • 計算出零件的尺寸
    • 請求服務器簽名通過「key」,「upload id」部分信息的零件
  5. 服務器
    • 簽署的一部分請求,發送 「部分上載URL」, 「日期」 和 「AUTH頭」
  6. 頁面
    • 經由直接發送部分數據到Amazon S3 「部分上傳的URL」使用「日期」和「身份驗證頭」
    • 跟蹤部分IDS的
  7. 服務器&頁面
    • 重複5 & 6爲每個附加部件,如果需要的話恢復
  8. 頁面
    • 使 「上載完成」 請求到服務器(通過所有部分信息)
  9. 服務器
    • 向亞馬遜API請求完成Ë創建文件的
  10. 頁面
    • 告知錯誤或成功

注意的用戶:

  • 如果上傳被中止,這也必須處理服務器端否則開始的部分/上傳將留在S3 Bucket中佔用空間。
  • 可能需要幾分鐘的時間才能完成向Amazon上傳的「上傳完成」請求。
+0

謝謝您的詳細解答!我已經開始實施你之前詳述的協議,但還沒有到處去實際完成它:https://github.com/keichan34/s3uploader/tree/2.0-wip –

+1

太好了,我注意到你是在你的項目中使用Ruby,並且還找到了另一個我已經添加到答案中的Ruby項目供你參考。 –

+0

這是PHP中的另一個例子[https://github.com/ienzam/s3-multipart-upload-browser](https://github.com/ienzam/s3-multipart-upload-browser) – BausTheBig