upload_file_to_oss.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. from minio import Minio
  2. from minio.error import S3Error
  3. from minio.deleteobjects import DeleteObject
  4. from config import minio_config
  5. from utils.get_logger import setup_logger
  6. logger = setup_logger(__name__)
  7. class UploadMinio():
  8. def __init__(self):
  9. self.minio_endpoint = minio_config.get("minio_endpoint")
  10. self.minio_access_key = minio_config.get("minio_access_key")
  11. self.minio_secret_key = minio_config.get("minio_secret_key")
  12. self.minio_bucket = minio_config.get("minio_bucket")
  13. self.flag = minio_config.get("flag")
  14. self.minio_client = Minio(self.minio_endpoint,
  15. access_key=self.minio_access_key,
  16. secret_key=self.minio_secret_key,
  17. cert_check=False,
  18. # http_client=http_client,
  19. secure=self.flag) # 如果使用https,请将secure设置为True
  20. def upload_file(self, local_file_path, minio_bucket_file):
  21. try:
  22. # 使用put_object方法将文件上传到MinIO
  23. self.minio_client.fput_object(self.minio_bucket, minio_bucket_file, local_file_path)
  24. logger.info(f"File {local_file_path} uploaded to MinIO successfully.")
  25. return True
  26. except S3Error as e:
  27. logger.error(f"Error uploading file to MinIO: {e}")
  28. return False
  29. except Exception as e:
  30. logger.error(f"报错信息:{e}")
  31. return False
  32. def upload_io_bytes(self, minio_bucket_file, bytes_obj):
  33. try:
  34. # 使用put_object方法将文件上传到MinIO
  35. self.minio_client.put_object(self.minio_bucket,minio_bucket_file, bytes_obj, bytes_obj.tell())
  36. logger.info(f"File {minio_bucket_file} uploaded to MinIO successfully.")
  37. return True
  38. except S3Error as e:
  39. logger.error(f"Error uploading file to MinIO: {e}")
  40. return False
  41. except Exception as e:
  42. logger.error(f"报错信息:{e}")
  43. return False
  44. def delete_doc_id_images(self, knowledge_id, doc_id):
  45. try:
  46. objects = self.minio_client.list_objects(self.minio_bucket, prefix=f"pdf/{knowledge_id}/{doc_id}", recursive=True)
  47. objects_to_delete = []
  48. for obj in objects:
  49. objects_to_delete.append(DeleteObject(obj.object_name))
  50. # self.minio_client.remove_object(self.minio_bucket, obj.object_name)
  51. error_responses = self.minio_client.remove_objects(self.minio_bucket, objects_to_delete)
  52. for error in error_responses:
  53. if error:
  54. delete_flag = False
  55. logger.info("Deletion Error: {}".format(error))
  56. break
  57. else:
  58. logger.info("Sussess")
  59. delete_flag = True
  60. return delete_flag
  61. except Exception as e:
  62. logger.error(f"删除minio图片出错:{e}")
  63. return False