upload_file.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import oss2
  2. import os
  3. oss_bucket_name = 'eai-files'
  4. oss_endpoint = 'oss-cn-shanghai.aliyuncs.com'
  5. access_key_id = 'LTAI5tAbkw8rkreiJbfcY1jZ'
  6. access_key_secret = '2yvtVYE1qAZEgm0ChvdMqhp0LhB5Lj'
  7. class OSSUploader:
  8. def __init__(self):
  9. self.bucket_name = 'eai-files'
  10. self.endpoint = 'oss-cn-shanghai.aliyuncs.com'
  11. self.access_key_id = 'LTAI5tAbkw8rkreiJbfcY1jZ'
  12. self.access_key_secret = '2yvtVYE1qAZEgm0ChvdMqhp0LhB5Lj'
  13. # 初始化 OSS 认证和 Bucket 对象
  14. self.auth = oss2.Auth(self.access_key_id, self.access_key_secret)
  15. self.bucket = oss2.Bucket(self.auth, self.endpoint, self.bucket_name)
  16. def upload_video_to_oss_local(self, local_video_path):
  17. """
  18. 上传本地视频文件到 OSS
  19. :param local_video_path: 本地视频文件路径
  20. :return: OSS 文件 URL(如果上传成功),否则返回 None
  21. """
  22. try:
  23. # 提取本地视频文件名
  24. video_filename = os.path.basename(local_video_path)
  25. # 上传视频文件到 OSS
  26. result = self.bucket.put_object_from_file(video_filename, local_video_path)
  27. if result.status == 200:
  28. # 生成公共读的访问 URL
  29. oss_url = f"https://{self.bucket_name}.{self.endpoint}/{video_filename}"
  30. # 删除本地视频文件
  31. os.remove(local_video_path)
  32. print(f"已成功删除本地视频文件: {local_video_path}")
  33. return oss_url
  34. else:
  35. print(f"上传失败,状态码: {result.status}")
  36. return None
  37. except Exception as e:
  38. print(f"上传过程中出现错误: {e}")
  39. return None
  40. def upload_video_to_oss_stream(self, data_stream, object_name):
  41. """
  42. 上传数据流到 OSS
  43. :param data_stream: 数据流(字节流或文件流)
  44. :param object_name: OSS 中的对象名称
  45. :return: OSS 文件 URL(如果上传成功),否则返回 None
  46. """
  47. try:
  48. # 上传数据流到 OSS
  49. result = self.bucket.put_object(object_name, data_stream)
  50. if result.status == 200:
  51. # 生成公共读的访问 URL
  52. oss_url = f"https://{self.bucket_name}.{self.endpoint}/{object_name}"
  53. return oss_url
  54. else:
  55. print(f"上传失败,状态码: {result.status}")
  56. return None
  57. except Exception as e:
  58. print(f"上传过程中出现错误: {e}")
  59. return None