12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- # -*- coding: utf-8 -*-
- import shutil
- import oss2
- class OssServeClient(object):
- def __init__(self, config):
- '''
- 文件存储客户端
- 目前使用阿里云OSS对象存储服务
- 注意:文件读写,都是以object-name为索引,请保存object-name
- '''
- self.auth = None
- self.bucket = None
- self._access_key_id = config.get("access_key_id", "")
- self._access_key_secret = config.get("access_key_secret", "")
- self._endpoint = config.get("endpoint", "")
- self._bucket_name = config.get("bucket_name", "")
- self.do_auth()
- def do_auth(self):
- '''
- 身份验证
- '''
- auth = oss2.Auth(self._access_key_id, self._access_key_secret)
- bucket = oss2.Bucket(auth, self._endpoint, self._bucket_name)
- self.auth = auth
- self.bucket = bucket
- def delete_object(self, object_name: str) -> (any, any):
- '''
- 删除内容
- '''
- result = self.bucket.delete_object(object_name)
- status, request_id = result.status, result.request_id
- return status, request_id
- def upload_bytes_file(self, object_name: str, file_content: bytes):
- '''
- 文件上传
- :param object_name: fid
- :param file_content: 文件流
- :return:
- '''
- result = self.bucket.put_object(object_name, file_content)
- status, request_id = result.status, result.request_id
- return status, request_id
- def download_file(self, object_name, save_path):
- '''
- 文件下载到本地
- :param object_name: fid
- :param save_path: 保存路径
- :return:
- '''
- object_stream = self.bucket.get_object_to_file(object_name, save_path)
- if object_stream.status == 200:
- return True
- def download_file_stream(self, object_name, filename):
- '''
- 文件流下载
- :param object_name: fid
- :param filename: 文件路径
- :return:
- '''
- object_stream = self.bucket.get_object(object_name)
- with open(filename, 'wb') as file:
- shutil.copyfileobj(object_stream, file)
- return object_stream.status, filename
|