fs_client.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. class FileServeClient(object):
  4. def __init__(self, config):
  5. '''
  6. 文本存储客户端
  7. 目前使用阿里云OSS对象存储服务
  8. 注意:文件读写,都是以object-name为索引,请保存object-name
  9. '''
  10. self.auth = None
  11. self.bucket = None
  12. self._access_key_id = config.get("access_key_id", "")
  13. self._access_key_secret = config.get("access_key_secret", "")
  14. self._endpoint = config.get("endpoint", "")
  15. self._bucket_name = config.get("bucket_name", "")
  16. self.do_auth()
  17. def do_auth(self):
  18. '''
  19. 身份验证
  20. '''
  21. auth = oss2.Auth(self._access_key_id, self._access_key_secret)
  22. bucket = oss2.Bucket(auth, self._endpoint, self._bucket_name)
  23. self.auth = auth
  24. self.bucket = bucket
  25. def upload_text_file(self, object_name: str, file_content: str) -> (any, any):
  26. '''
  27. 文本上传
  28. '''
  29. result = self.bucket.put_object(object_name, bytes(file_content, encoding='utf-8'))
  30. status, request_id = result.status, result.request_id
  31. return status, request_id
  32. def download_text_content(self, object_name) -> (bool, str):
  33. '''
  34. 下载文本内容
  35. '''
  36. object_stream = self.bucket.get_object(object_name)
  37. content = object_stream.read()
  38. if object_stream.client_crc == object_stream.server_crc:
  39. return True, str(content, encoding='utf-8')
  40. else:
  41. return False, ''
  42. def delete_object(self, object_name: str) -> (any, any):
  43. '''
  44. 删除内容
  45. '''
  46. result = self.bucket.delete_object(object_name)
  47. status, request_id = result.status, result.request_id
  48. return status, request_id