国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python的Django中將文件上傳至七牛云存儲(chǔ)的代碼分享

2019-11-25 16:45:41
字體:
供稿:網(wǎng)友

最近在寫的一個(gè)django小項(xiàng)目需要實(shí)現(xiàn)用戶上傳圖片的功能,使用到了七牛云存儲(chǔ),特此記錄下來。這里我使用的七牛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用來指定圖片保存在七牛中的文件名,token是上傳憑證,即用來驗(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 qiniuimport uuidACCESS_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))

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 和田县| 吉水县| 台东县| 青川县| 兴文县| 开江县| 旌德县| 武功县| 祁东县| 井冈山市| 上犹县| 芜湖市| 友谊县| 通渭县| 寻乌县| 上犹县| 海宁市| 鄂州市| 和平县| 永平县| 大冶市| 轮台县| 莱阳市| 宜川县| 汪清县| 连云港市| 中宁县| 澳门| 偃师市| 清丰县| 墨竹工卡县| 萍乡市| 阳江市| 利津县| 乡宁县| 西乡县| 哈密市| 建平县| 江油市| 福海县| 怀仁县|