oss服務:bucket中的圖片,如果想不校驗直接訪問,需要設置bucket為公共讀屬性。
在OSS中,操作的基本數據單元是文件(Object)。OSS Python SDK提供了豐富的文件上傳方式:
簡單上傳:文件最大不能超過5GB。
追加上傳:文件最大不能超過5GB。
斷點續傳上傳:支持並發、斷點續傳、自定義分片大小。大文件上傳推薦使用斷點續傳。最大不能超過48.8TB。
分片上傳:當文件較大時,可以使用分片上傳,最大不能超過48.8TB。
# -*- coding: utf-8 -*-
import datetime
import shortuuid
from linde import settings
class Oss:
"""
oss存儲類
上傳bytes流,返回狀態碼和url
"""
def __init__(self, access_key_id=settings.ACCESS_KEY_ID, access_key_secret=settings.ACCESS_KEY_SECRET,
endpoint=settings.ENDPOINT, bucket_name=settings.BUCKET_NAME):
import oss2
# 阿里雲主賬號AccessKey擁有所有API的訪問權限,風險很高。強烈建議您創建並使用RAM賬號進行API訪問或日常運維,請登錄 https://ram.console.aliyun.com 創建RAM賬號。
auth = oss2.Auth(access_key_id, access_key_secret)
# Endpoint以杭州為例,其它Region請按實際情況填寫。'http://oss-cn-hangzhou.aliyuncs.com'
self.bucket = oss2.Bucket(auth, endpoint, bucket_name)
def upload_bytes(self, file_bytes, image_name):
"""上傳bytes文件"""
result = self.bucket.put_object('{}'.format(image_name), file_bytes)
oss_obj = Oss()
# 上傳后,可以訪問的 url 的組成
photo_name += '.jpg'
domain = 'http://{}.{}/'.format(settings.BUCKET_NAME, settings.ENDPOINT)
url_photo = domain + photo_name
# ENDPOINT = 'oss-cn-shanghai.aliyuncs.com'
# BUCKET_NAME = 'ai-gater'