2013-10-18 51 views
1

我有一個預先簽名的URL,允許您將文檔對象放入S3中​​。 http://docs.aws.amazon.com/AmazonS3/latest/dev/UploadObjectPreSignedURLDotNetSDK.html將文件從瀏覽器上傳到S3

如何從瀏覽器到S3使用JavaScript文件?我使用角度,但我打開使用任何JavaScript庫。

我相信我可以張貼到我的服務器,然後把亞馬遜服務器上的對象,但我寧願從瀏覽器做到這一點。

我已經改變了S3的CORS設置,以允許看跌期權。

我正打算使用的角度文件上傳,但它是硬編碼爲POST不能放。 https://github.com/danialfarid/angular-file-upload

+0

inkfilepicker.com – Stewie

+0

的上傳庫我維持,[精細上傳](http://fineuploader.com)本身直接處理,上傳到S3中的所有瀏覽器,包括IE7。它還支持分塊,自動恢復,重試以及其他一些功能。它在這方面爲你做了大部分工作,而其他圖書館卻沒有。可以在我剛剛鏈接的頁面上找到upload-to-s3功能的現場演示。 –

+0

實際上,對於https://github.com/danialfarid/angular-file-upload,你可以在上傳參數中指定方法:'PUT'。如果你遵循一些人在S3中使用它的問題並且在1.1.1版中解決了問題,它應該與S3一起工作。您可以在此處查看問題:https://github.com/danialfarid/angular-file-upload/pull/26,https://github.com/danialfarid/angular-file-upload/issues/23,https:/ /github.com/danialfarid/angular-file-upload/issues/25 – danial

回答

1

亞馬遜有一個指導(here),它描述瞭如何將文件上傳到S3存儲桶。它依賴於使用您的AWS私鑰簽名的輸入<表格>。您可以指定目標目錄的限制以及文件大小限制。

使用起來有點麻煩,因爲您必須複製<表格>和簽署的策略中的大部分字段,但似乎可行。

後門柱,S3會將瀏覽器重定向到您的形式指定一個URL(帶有參數指定上傳文件的名稱等)。這對於Angular網站來說並不理想,Angular網站往往是「應用程序」而不是一組離散頁面,但您可以使用它。

在我的角度網站,我沒有在JavaScript中使用POST $ http.post(),並通過了所有的適當形式的數據。不幸的是,即使上傳實際上是成功的,我總是會得到「取消」的錯誤。在我的情況下,我通過使用$ http.get()下載文件並將其與原始數據進行比較來進行雙重檢查......但這只是一個可行的解決方案,因爲我的文件只有幾KB。

+0

這似乎是一條合理的路線。你有任何代碼樣本?你使用的文件上傳JavaScript庫? –