七牛雲介紹
- 項目初期, 資料量小的情況下, 一般會采用第三方的存儲方案, 成本比較低, 而且也安全可靠
- 當資料量達到一定的規模, 第三方存儲的費用超過自己搭建檔案服務, 才會選擇搭建自己檔案服務系統
- 對象存儲服務 OSS
- 使用細節
- 要求實名認證
- 建立存儲空間
- 預設生成測試域名 有效期為一個月 要長期使用則需要綁定自己的域名
互動過程
API封裝
-安裝
pip install qiniu
from qiniu import Auth, put_data
def upload_file(file_data):
"""
七牛雲上傳
:param file_data 上傳的二進制資料
:return: 檔案名
"""
#需要填寫你的 Access Key 和 Secret Key
access_key = 'kJ8wVO7lmFGsdvtI5M7eQDEJ1eT3Vrygb4SmR00E'
secret_key = 'rGwHyAvnlLK7rU4htRpNYzpuz0OHJKzX2O1LWTNl'
#建構鑒權對象
q = Auth(access_key, secret_key)
# 要上傳的空間
bucket_name = 'info28'
# 上傳後儲存的檔案名 如果為None 自動生成檔案名(hash值)
key = None
#生成上傳 Token,可以指定過期時間等
token = q.upload_token(bucket_name, key, 3600)
ret, info = put_data(token, key, file_data)
# 判斷請求結果
if info.status_code == 200:
return ret.get('key')
else:
raise Exception(info.error)
if __name__ == '__main__':
with open('123.jpg', 'rb') as f:
img_bytes = f.read()
file_name = upload_file(img_bytes)
print(file_name)
- 判斷檔案類型是否為圖檔
import imghdr
if __name__ == '__main__':
with open('123.jpg', 'rb') as f:
# 判斷檔案類型的本質是 對比檔案的前幾個位元組
content = f.read()
# print(content)
# # 方式1 判斷圖檔類型
# img_type = imghdr.what(f)
# if img_type:
# print('是圖檔類型: %s' % img_type)
# else:
# print('不是圖檔類型')
# 方式2 判斷圖檔類型
img_type = imghdr.what(None, content)
if img_type:
print('是圖檔類型: %s' % img_type)
else:
print('不是圖檔類型')
接口實作‘’
# 上傳頭像
/v1_0/user/photo
# 請求方式
PATCH form-data
# 請求參數
photo 上傳的頭像檔案
# 響應資料 json
{
"photo_url": "www.xx.com/123.jpg"
}
過期時間調長一些
- 虛拟機的時間和真實時間存在較大的偏差