七牛雲試用指南-文件下載

在驗證單文件直傳的結果時,已講解過從七牛雲下載文件的最基礎方法,即拼出下載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>

其中,編碼

  • e字段指定下載受權有效期的截止時間,是一個UNIX時間戳,單位爲秒;
  • token字段指定下載受權憑證,必須做爲下載URL的最後一個參數。

下載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 署名-非商業性使用-禁止演繹

容許自由轉載,請註明做者及出處。

相關文章
相關標籤/搜索