天天看點

第三方存儲--七牛雲

七牛雲介紹

  • 項目初期, 資料量小的情況下, 一般會采用第三方的存儲方案, 成本比較低, 而且也安全可靠
  • 當資料量達到一定的規模, 第三方存儲的費用超過自己搭建檔案服務, 才會選擇搭建自己檔案服務系統
  • 對象存儲服務 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"
}
           

過期時間調長一些

  • 虛拟機的時間和真實時間存在較大的偏差