在驗證單文件直傳的結果時,已講解過從七牛雲下載文件的最基礎方法,即拼出下載URL。針對不一樣的場景,還能夠給URL附加不一樣的指令和相應參數,對原文件進行特殊處理。算法
任何人在任什麼時候間均可如下載公開空間裏的文件,只要知曉文件的資源名(Key)和所在Bucket,就能夠按如下規則構造出URL:編程
http://<Bucket>.qiniudn.com/<Key>
經過爲存儲空間綁定自定義域名,還能夠構造出更貼合應用的URL:segmentfault
http://<Domain>/<Key>
注意:只有在上傳時指定合適的MIME類型,瀏覽器下載文件後纔會正確地進行處理。瀏覽器
有時候,對原文件進行必定處理後再下載,會帶來很多便利,好比直接下載大型圖片的縮略圖等。七牛雲存儲提供豐富的數據處理指令,能處理各式各樣的資源(圖片、音頻、視頻、辦公文檔等等)。七牛雲存儲
按照如下規則構造URL便可觸發同步式數據處理:緩存
http://<Bucket>.qiniudn.com/<Key>?<Fop>
注意:ruby
具體數據處理指令和參數規格將在後續文章中展開介紹。函數
與公開空間相反,私有空間中的文件只容許特定的人在特定的時間段內訪問。這是經過在URL上附加下載受權憑證明現的,規則以下:ui
http://<Bucket>.qiniudn.com/<Key>?e=<deadline>&token=<DownloadToken>
其中,編碼
下載URL的簽發算法以下所示:
#!/usr/bin/env ruby # encoding : utf-8 # download_token.rb require 'base64' require 'openssl' def download_url(access_key, secret_key, url, expires) # 計算受權有效期截止時間,UNIX時間戳格式 deadline = (Time.now() + expires).tv_sec() # 將截止時間做爲e參數的值,附加到URL上 new_url = url if new_url =~ /[?]/ then new_url += "&e=#{deadline}" else new_url += "?e=#{deadline}" end # 使用SHA1做爲HASH函數,生成簽名 sign = OpenSSL::HMAC.digest( 'sha1', secret_key, new_url ) # 對簽名作UrlSafe-Base64編碼 encoded_sign = Base64.urlsafe_encode64(sign) # 拼出下載受權憑證,以「:」做爲分隔符 token = "#{access_key}:#{encoded_sign}" # 拼出完整URL new_url += "&token=#{token}" return new_url end # download_url ACCESS_KEY = 'MY_ACCESS_KEY' # 使用時請更換成真實的AccessKey SECRET_KEY = 'MY_SECRET_KEY' # 使用時請更換成真實的SecretKey EXPIRES = 600 url = 'http://private.qiniudn.com/test.txt' new_url = download_url(ACCESS_KEY, SECRET_KEY, url, 600) puts new_url # 輸出示例:http://private.qiniudn.com/test.txt?e=1389852108&token=MY_ACCESS_KEY:MAso7VUwAHwXNHghlDSrPXqpnYM=
私有文件一樣能夠先通過雲處理再下載,URL構造規則以下:
http://<Bucket>.qiniudn.com/<Key>?<Fop>&e=<deadline>&token=<DownloadToken>
要點是將e參數和token參數按順序放在整個URL的最後。
爲七牛雲中的資源構造下載URL是很容易的,構造規則簡單好記,使用簡便。下一章將介紹相關的編程實踐內容。
七牛雲存儲 © 2014 署名-非商業性使用-禁止演繹
容許自由轉載,請註明做者及出處。