import time import os try: import oss2 _OSS2_AVAILABLE = True except Exception as _e: print(f'[OSS upload_oss] ⚠️ oss2 导入失败({_e}),OSS 上传功能不可用') _OSS2_AVAILABLE = False class OSS_object(): def __init__(self): if not _OSS2_AVAILABLE: print('[OSS upload_oss] oss2 不可用,OSS 功能关闭') self.bucket = None return access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', '') access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', '') bucket_name = os.getenv('OSS_TEST_BUCKET', '') endpoint = os.getenv('OSS_TEST_ENDPOINT', '') # 密钥未设置时标记不可用(不抛异常) if '<' in access_key_id or '<' in access_key_secret: print('[OSS upload_oss] ⚠️ 未设置 OSS 密钥环境变量,OSS 上传功能不可用') self.bucket = None return self.bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name) def upload_file(self, file, target_name): t0 = time.time() with open(oss2.to_unicode(file), 'rb') as f: ret = self.bucket.put_object(target_name, f) print(ret.headers['x-oss-request-id']) url = "https://oss-aidigitalfield.oss-cn-beijing.aliyuncs.com/{}".format(target_name) print('耗时:{},签名url的地址为:{}'.format(time.time() - t0, url)) return url if __name__ == '__main__': oss_2 = OSS_object() t0 = time.time() url = oss_2.upload_file('/home/szlc/Downloads/多中心录入模版.xlsx', 'tongji/多中心录入模版.xlsx') print('url:', url)