2010-06-14 90 views
1

我決定使用Amazon S3作爲我創建的應用程序的文檔存儲。我遇到的一個問題是,當我需要將文件上傳到S3時,我需要在我的應用程序中創建一個文檔對象,以便我的用戶可以執行CRUD操作。如何防止使用Amazon S3進行雙重文件上傳?

一個解決方案是允許雙重上傳。用戶將文檔上載到我的Rails應用程序所在的服務器上。我驗證並創建該對象,然後將其傳遞給S3。與此有關的一個問題是進度指標變得更加複雜。使用大多數開箱即用的插件會向客戶端顯示文件已完成上傳,因爲它位於我的服務器上,但是當文件從服務器上傳到S3時會有相當大的延遲。這也引入了不必要的帶寬(至少似乎沒有必要)

我想到的另一個解決方案是用一個AJAX請求直接將文件上傳到S3,並且當成功時,再發出一個AJAX請求到將對象存儲在我的數據庫中。這裏的一個問題是,我必須在文件上傳後驗證文件,這意味着如果驗證失敗,我必須在S3中運行一些清理代碼。

兩者似乎同樣凌亂。

有沒有人有更優雅的工作,他們不介意分享?我想這是「雲存儲」今天非常流行的常見情況。也許我看着這個錯誤。

+0

我已經問了一個類似的問題:http://stackoverflow.com/questions/5796468/amazon-s3-multipart-upload-with-plupload-and-rails-3問題是類似的,因爲我試圖解決同樣的問題問題,但我想到了一種使用組塊來消除雙倍時間的方法。您的EC2應用程序是?我的是,但重新保存大文件仍然很慢。 – Amala 2011-04-29 13:52:39

回答

2

除非有特殊原因不使用回形針,否則我會強烈推薦它。與延遲作業和延遲迴形針結合使用時,用戶可以將文件上傳到您的服務器文件系統,在該文件系統中執行所需的任何驗證。一個延遲的工作然後處理並存儲在s3上。真的很容易設置和更好的用戶體驗。

相關問題