Amazon S3 Python 上传文件

1 篇文章 0 订阅
1 篇文章 0 订阅

引入Boto3,文档:

Boto3 documentation — Boto3 Docs 1.23.0 documentation

import boto3
from loguru import logger

class S3_upload():

    def __init__(self, bucket_name, region):
        aws_access_key_id = 'your aws_access_key_id'
        aws_secret_access_key = 'your aws_secret_access_key'
        region = region                  # 区域
        # region = 'ap-east-1'
        
        self.s3 = boto3.client('s3', aws_access_key_id=aws_access_key_id,
                          aws_secret_access_key=aws_secret_access_key,
                          region_name=region)
        self.BUCKET_NAME = bucket_name
    
    def upload_files(self, path_local, path_s3):
        """
        上传(重复上传会覆盖同名文件)
        :param path_local: 本地路径
        :param path_s3: s3路径(文件名, 就是s3仓库上的key)
        """
        logger.info(f'Start upload files.')

        if not self.upload_single_file(path_local, path_s3):
            logger.error(f'Upload files failed.')
            return {'code': 200, 'message': '上传失败'}

        logger.info(f'Upload files successful.')
        return {'code': 200, 'message': '上传成功'}


    def upload_single_file(self, src_local_path, dest_s3_path):
        """
        上传单个文件
        :param src_local_path:
        :param dest_s3_path: 
        :return:
        """
        try:
            with open(src_local_path, 'rb') as f:
                self.s3.upload_fileobj(f, self.BUCKET_NAME, dest_s3_path, ExtraArgs={"ContentType" : 'text/html'})
        except Exception as e:
            logger.error(f'Upload data failed. | src: {src_local_path} | dest: {dest_s3_path} | Exception: {e}')
            return False
        logger.info(f'Uploading file successful. | src: {src_local_path} | dest: {dest_s3_path}')
        return True

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值