用七牛雲存儲實現博客圖牀(二)——製作上傳工具

既然我們已經選擇了七牛,那就開始吧。

關於怎麼註冊賬號,建立空間這種事情這裡就不介紹了,沒有什麼意義,我自己操作的時候也沒記得有什麼坑,如果有人有遇到問題可以在下面評論區留言

假如進展一切順利,我們就在七牛有了一個bucket,這個bucket就是我們存儲文件的空間了,在七牛控制檯的內容管理界面可以添加上傳文件。

呃。。必須吐槽一下,七牛在的後臺文件管理實在是太亂了。。只能一下子列出所有文件,不能按照路徑前綴來分類,搜索也不能模糊匹配,必須從路徑前綴開始輸入。而七牛的意思好像是不建議用戶在直接在管理後臺管理文件 ,所以提供了一個 叫做QRSBox的工具 ,這是一個可以同步本地某個文件夾的客戶端工具。如果要更多的功能就沒有了,所以我以後還是想辦法自己寫一個工具來管理吧。 環境準備

先不扯那麼遠,我們先從上傳開始。最近開始學習用Python,那我們就用骯髒的py來寫吧(誤)

先到七牛的文檔中心找接口,找到 Python的文檔 ,嗯需要安裝七牛的模塊,直接用pip安裝就行了。

這裡就有坑了,windows用戶會比較蛋疼,為了安裝一個七牛模塊,你可能需要安裝pip這個包管理器,為了安裝pip你還要安裝setuptools。。GG。MacOS就很簡單了,如果安裝了homebrew,安裝所有東西都只是幾句話的事情。

所以對於Windows用戶來說,最好的方法還是下載安裝一個 PyCharm ,來自JetBrain的Python IDE,這裡面自帶pip,可視化安裝各種模塊。

這裡我已經安裝好了七牛,如果沒有的話點右邊的加號就能搜索到所有的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('\r', '').replace('\n', '') 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;)☆)

最後的結果是這個樣子的

這篇博客裡的所有圖片都是用這個工具上傳的啦,由圖可見,文件組織方式是按日期+原始文件名來的,為以防萬一最好還是不要用中文,上傳成功後會輸出這個文件的外鏈,複製出來就能直接用啦~


分享到:


相關文章: