既然我們已經選擇了七牛, 那就開始吧。
關於怎麼註冊帳號, 建立空間這種事情這裡就不介紹了, 沒有什麼意義, 我自己操作的時候也沒記得有什麼坑, 如果有人有遇到問題可以在下面評論區留言
假如進展一切順利, 我們就在七牛有了一個bucket, 這個bucket就是我們存儲檔的空間了, 在七牛控制台的內容管理介面可以添加上傳檔。
呃。 。 必須吐槽一下, 七牛在的後臺檔管理實在是太亂了。 。 只能一下子列出所有檔, 不能按照路徑首碼來分類, 搜索也不能模糊匹配, 必須從路徑首碼開始輸入。 而七牛的意思好像是不建議用戶在直接在管理後臺管理檔 ,
先不扯那麼遠, 我們先從上傳開始。 最近開始學習用Python, 那我們就用骯髒的py來寫吧(誤)
先到七牛的文檔中心找介面, 找到 Python的文檔 , 嗯需要安裝七牛的模組, 直接用pip安裝就行了。
這裡就有坑了, windows用戶會比較蛋疼, 為了安裝一個七牛模組, 你可能需要安裝pip這個包管理器, 為了安裝pip你還要安裝setuptools。 。 GG。 MacOS就很簡單了, 如果安裝了homebrew, 安裝所有東西都只是幾句話的事情。
這裡我已經安裝好了七牛, 如果沒有的話點右邊的加號就能搜索到所有的Python模組,
登陸 七牛開發者平臺 , 找到自己的Access Key和Secret Key, 複製下來, 除此之外還要準備好想上傳存儲空間的bucket名稱, 自訂功能變數名稱外鏈首碼(比如我的是 http://qn.inspoy.cc/ )。 現在我們已經有了4個字串, OK把他們保存在一個文字檔中。
正片在這裡
都準備萬全之後開始編寫代碼, 首先要先從這個文字檔中把資料讀出來
# load key access_key = '' secret_key = '' bucket_name = '' link_prefix = '' key_file = open('key.txt') key_lines = key_file.readlines for key_line in key_lines: key_key = key_line[:key_line.find('=')] key_val = key_line[key_line.find('=') + 1:] key_val = key_val.replace(' ', '').replace(' ', '') if key_key == 'access_key': access_key = key_val if key_key == 'secret_key': secret_key = key_val if key_key == 'bucket_name': bucket_name = key_val if key_key == 'link_prefix': link_prefix = key_val
然後創建一個授權物件Auth, 用來驗證身份, 當然不要忘了import七牛的模組
from qiniu import Auth # other code # initialize q = Auth(access_key, secret_key) # end
使用該授權物件去試圖生成一個指定bucket的上傳token
# key是bucket中的目的檔案名 key = '' # filepath是本地要上傳的檔案名 filepath = '' token = q.upload_token(bucket_name) ret, info = put_file(token, key, filepath, check_crc=True)
之後檢查一下返回值ret的狀態, 確認上傳過程是否成功, 如果上傳成功的話, info裡會存儲有本次上傳操作的相關資訊
assert ret['key'] == key assert ret['hash'] == etag(localfile) print(info)
注:ETag是七牛用來校驗檔的雜湊演算法,
執行 put_file 後, 如果返回值正常, 再訪問七牛管理後臺看看, 是不是檔已經被上傳上去了
接下來就是輸入和結果的校驗和GUI了, 校驗方法詳見 github 上的代碼, GUI的話暫時選用了不用安裝額外協力廠商模組的TkInter, 雖然很簡陋。 。 但是可以用((
dot;)☆)
最後的結果是這個樣子的
這篇博客裡的所有圖片都是用這個工具上傳的啦, 由圖可見, 檔組織方式是按日期+原始檔案名來的, 為以防萬一最好還是不要用中文, 上傳成功後會輸出這個檔的外鏈, 複製出來就能直接用啦~