Hosting

用於客戶端下載的雲儲存選項

  • November 3, 2011

我正在尋找一種將範例文件分發給客戶的方法。要求是上傳文件(相對)簡單,可以將連結發送給可以使用瀏覽器下載文件的客戶端,客戶端的連結不能用於查找其他文件

目前,我使用 Dropbox 和腳本來創建唯一的保管箱文件夾並生成類似http://dl.dropbox.com/u/1234/some_long_random_name/the_sameple_video.mov的連結,而不是管理密碼

無需加密內容,文件通常小於 1Gb,我們預計每天只下載幾次。我們不想在我們的網站上託管它(不要問),我們想要一個服務會存在一段時間,但數據儲存在本地,所以 9-9 冗餘不是問題

我將提供一個 S3 答案,因為它是您的標籤之一。Amazon 的 S3 允許您設置文件權限,並創建一個帶有到期時間的簽名 URL。結合使用這兩個想法,可以創建一個用作一次性 URL 的系統。此外,S3 有兩個級別的儲存,因此如果冗餘不是您的主要因素,則可以通過使用減少的冗餘儲存來節省一點。不過,與所有 AWS 服務一樣,您必須為使用的頻寬付費。S3 還會對您的文件的每個請求收取費用。

與將文件權限設置為公共的典型 S3 實現不同,您將在此處將權限設置為私有,並使用您的訪問密鑰簽名以授予訪問權限。

如果您不關心您的客戶是否與其他人共享連結或多次下載(只要他們無法訪問任何其他文件),那麼實現非常簡單,您只需要創建一個(相當遠的)未來到期日期簽名的 URL。因此,例如,您將文件上傳到 S3(預設情況下它是私有的);創建一個有效期為一周的簽名 URL;並且您的客戶可以在下週內使用所提供的 URL 訪問該文件,次數不限。他們無法訪問任何其他文件,因為他們沒有簽名的 URL - 並且所有文件都是私有的。

上述情況的問題之一是 - 您不想讓 URL 保持可用時間過長,但您需要給客戶足夠的時間來訪問文件 - 還需要一些努力來驗證您的客戶實際上已經查看了該文件(即您將打開 S3 上的日誌記錄,並檢查您的日誌)。

替代方案需要在您的站點上進行部分實施,而不是完全依賴 S3。創建一個接受唯一 ID(儲存在數據庫中)的頁面,並向您的客戶發送包含該 ID 的頁面連結。當您的客戶訪問該頁面時,您會生成一個簽名的 S3 URL,該 URL 將在不久的將來(30 秒)到期。(同時,您當然可以記錄該 ID 不再有效並且您的客戶已訪問該文件)。使用生成的 URL 啟動下載。這樣,客戶只能使用該 URL 一次 - 他們無法將其提供給其他人(儘管他們始終可以將文件本身提供給其他人),他們可以隨時使用您通過電子郵件發送給他們的連結(因為沒有過期),並且由於您使用的是簽名 URL,

引用自:https://serverfault.com/questions/327162