2011-02-28 49 views
6

我正在使用Amazon S3和一個簡單的項目,當用戶上傳文件時,我首先使用XMLHTTPRequest將詳細信息發送到我的數據庫,然後觸發表單POST,將文件直接上傳到S3。亞馬遜S3 POST,事件何時完成?

雖然我無法完全解決上述問題,但是我可以正確更新顯示(我現在在作弊並且只是在顯示器保存在數據庫中時更新顯示器)可以勉強地告訴小上傳,但從長遠來看顯然是一個問題)。

上傳完成後,S3服務器似乎「取消導航」,因此頁面不會重新加載 - 是否有任何事件是解僱了我可以用來檢測上傳完成的時間?

感謝

編輯:我使用的表單代碼從這裏http://s3.amazonaws.com/doc/s3-example-code/post/post_sample.html剛剛新增的onsubmit之前的形式被髮布到亞馬遜觸發該XMLHttpRequest來我自己的服務器形式。

回答

23

Amazon S3將重定向到success_action_redirect字段中指定的網址,或者如果沒有指定,則返回一個空文檔,其狀態代碼在success_action_status中指定。

完成POST後,用戶將被重定向到您在success_action_redirect字段中指定的位置。如果Amazon S3無法解釋該URL,則會忽略success_action_redirect字段。

如果未指定success_action_redirect,Amazon S3將返回success_action_status字段中指定的空文檔類型。

如果POST失敗,則Amazon S3顯示錯誤並且不提供重定向。

有關更多詳細信息,請參閱AWS docs

+0

可愛,謝謝傑夫 - 我已經注意到了文檔中的success_action_redirect,但是請閱讀'重定向字段名稱已被棄用,將來會刪除對重定向字段名稱的支持。「現在,您已經讓我再次閱讀它,我意識到它並不是被棄用的全部功能,而只是爲了做到這一點而被稱爲「重定向」的字段(必須讀得更慢!)。這應該做的伎倆。謝謝。 – MalphasWats 2011-03-09 09:15:45

+0

@MalphasWats - 是的,我注意到在文檔中也是如此。匆匆一瞥,很容易誤解它們的含義。 – 2011-03-09 09:18:28

+1

@MalphasWats - 你知道你需要手動分配賞金......只是說... ;-) – 2011-03-09 15:20:57

1

Amazon S3不會觸發任何類型的事件,但當S3返回HTTP 200狀態碼時,您的XMLHTTPRequest代碼應該能夠觸發回調。

如果S3沒有返回成功的響應代碼,S3很可能不知道您的上傳已完成。您是否發送Content-Length標題作爲您的請求的一部分?

+0

不是我所知道的 - 我使用一個簡單的POST表單來發送文件,所以XMLHTTPRequest根本不與亞馬遜通信,它將詳細信息發送到我的服務器,然後觸發form.submit ()到S3存儲桶 - 我不認爲有一種簡單的方法將內容長度標題添加到表單中? – MalphasWats 2011-03-02 22:59:34