Python的Django中將文件上傳至七牛云存儲(chǔ)的代碼分享
最近在寫的一個(gè)django小項(xiàng)目需要實(shí)現(xiàn)用戶上傳圖片的功能,使用到了七牛云存儲(chǔ),特此記錄下來(lái)。這里我使用的七牛python SDK 版本是7.0.3,函數(shù)使用上可能會(huì)與舊版有些不同。
原本文件上傳需要先把文件上傳到自己的業(yè)務(wù)服務(wù)器,再?gòu)臉I(yè)務(wù)服務(wù)器上傳到云存儲(chǔ)?,F(xiàn)在七牛的表單上傳可以直接把文件上傳到七牛,不再需要業(yè)務(wù)服務(wù)器的中轉(zhuǎn),節(jié)省了流量成本,降低了業(yè)務(wù)服務(wù)器的壓力。而且通過設(shè)置,還可以在文件上傳完成后讓客戶端自動(dòng)重定向到一個(gè)上傳成功的結(jié)果頁(yè)面。這里我就是使用了七牛的表單上傳。
表單上傳
用戶上傳圖片的HTML表單代碼如下。其中key用來(lái)指定圖片保存在七牛中的文件名,token是上傳憑證,即用來(lái)驗(yàn)證合法性和設(shè)置返回信息的。
upload.html
<form method="POST" action="http://upload.qiniu.com/" enctype="multipart/form-data"> <input name="key" type="hidden" value=""> <input name="token" type="hidden" value=""> <input name="file" type="file"> <input type="submit"> </form>
跳轉(zhuǎn)到上面HTML頁(yè)面的視圖函數(shù)中的關(guān)鍵代碼如下。其中upload_token函數(shù)用于生成表單里的token字段,upload_token函數(shù)中的7200代表上傳憑證的有效期,returnUrl表示上傳成功后的重定向地址,returnBody表示重定向時(shí)七牛返回的信息,它是一個(gè)base64編碼后的json數(shù)據(jù),需要解碼獲取json數(shù)據(jù),當(dāng)上傳出錯(cuò)時(shí)錯(cuò)誤信息直接在url中以明文的形式出現(xiàn),并不會(huì)在返回的json數(shù)據(jù)里。通過設(shè)置mimeLimit還可以限制上傳文件的類型。
views.py
import qiniu import uuid ACCESS_KEY = '七牛分配的公鑰' SECRET_KEY = '七牛分配的私鑰' BUCKET_NAME = '保存文件的倉(cāng)庫(kù)名' key = str(uuid.uuid1()).replace('-', '') # 這里使用uuid作為保存在七牛里文件的名字。并去掉了uuid中的“-” q = qiniu.Auth(ACCESS_KEY, SECRET_KEY) token = q.upload_token(BUCKET_NAME, key, 7200, {'returnUrl':'http://127.0.0.1:8000/photos/uploadprocessor', 'returnBody': '{"name": $(fname), "key": $(key)}', 'mimeLimit':'image/jpeg;image/png'}) return render_to_response('photos/upload.html', {'token': token, 'key': key}, context_instance=RequestContext(request))
- Django實(shí)現(xiàn)文件上傳下載功能
- GO語(yǔ)言實(shí)現(xiàn)文件上傳代碼分享
- Python+django實(shí)現(xiàn)文件上傳
- Django實(shí)現(xiàn)文件上傳和下載功能
- Python+django實(shí)現(xiàn)簡(jiǎn)單的文件上傳
- golang語(yǔ)言實(shí)現(xiàn)的文件上傳與文件下載功能示例
- Django處理文件上傳File Uploads的實(shí)例
- python+django快速實(shí)現(xiàn)文件上傳
- Django框架文件上傳與自定義圖片上傳路徑、上傳文件名操作分析
- Go語(yǔ)言實(shí)現(xiàn)文件上傳
相關(guān)文章
Django Rest framework權(quán)限的詳細(xì)用法
這篇文章主要介紹了Django Rest framework權(quán)限的詳細(xì)用法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07python 檢查數(shù)據(jù)中是否有缺失值,刪除缺失值的方式
今天小編就為大家分享一篇python 檢查數(shù)據(jù)中是否有缺失值,刪除缺失值的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-12-12Pytorch框架實(shí)現(xiàn)mnist手寫庫(kù)識(shí)別(與tensorflow對(duì)比)
這篇文章主要介紹了Pytorch框架實(shí)現(xiàn)mnist手寫庫(kù)識(shí)別(與tensorflow對(duì)比),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07python數(shù)組中的?k-diff?數(shù)對(duì)例題解析
這篇文章主要介紹了python數(shù)組中的?k-diff?數(shù)對(duì)例題解析,文章根據(jù)題目?jī)?nèi)容對(duì)其進(jìn)行分析以此展開主題內(nèi)容,感興趣的小伙伴可以參考一下下面文章詳情2022-06-06Python爬取科目四考試題庫(kù)的方法實(shí)現(xiàn)
這篇文章主要介紹了Python爬取科目四考試題庫(kù)的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03使用Python快樂學(xué)數(shù)學(xué)Github萬(wàn)星神器Manim簡(jiǎn)介
這篇文章主要介紹了使用Python快樂學(xué)數(shù)學(xué)Github萬(wàn)星神器Manim簡(jiǎn)介,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-08-08