【python】阿里云oss上传文件

该代码定义了一个名为UPLOAD_FILE的类,用于处理OSS(对象存储服务)的文件上传和下载。类中包含初始化方法,用于设置认证信息和bucket。upload_file方法支持上传本地文件或目录,同时检查OSS上是否存在同名文件。此外,还提供了一个oss2_data函数用于从URL下载数据并上传到OSS。
# 定义oss类
import requests
import oss2

class UPLOAD_FILE():
    def __init__(self, subfilename, key="******", password="******"):
        auth = oss2.Auth(key, password) # 初始化
        self.bucket = oss2.Bucket(auth, "url", "******")
        self.subfilename = subfilename  # oss 路径# oss 路径
        print(self.subfilename)

    def upload_file(self, path_list=None, path=None, type='content', content_file=None, content_name=None):
        if path_list:
            list_file = os.listdir(path_list)
            for file in list_file:
                local_file = path_list + "\\" + "{}".format(file)
                osspath = self.subfilename + '/' + file
                print(osspath)
                self.up_file(osspath, local_file)
        elif path:
            osspath = self.subfilename + '/' + path.split('/')[-1]
            local_file = path
            self.up_file(osspath, local_file)
            return osspath
        elif type == 'content':
            osspath = self.subfilename + '/' + content_name
            exist = self.bucket.object_exists(osspath)
            if exist:
                print("oss have files with the same name, ignore oss upload")
                return osspath
            else:
                self.bucket.put_object(osspath, content_file)
                print(" {} 上传成功".format(osspath))
                return osspath
        else:
            print("未指定路径")

    def up_file(self, osspath, local_file):
        # 先检测oss上是否有该文件
        exist = self.bucket.object_exists(osspath)
        if exist:
            print("oss have files with the same name, ignore oss upload")
        else:
            # 上传文件
            with open(local_file, "rb") as fileobj:
                result1 = self.bucket.put_object(osspath, fileobj)
                print("{} 上传成功".format(osspath))
            if int(result1.status) != 200:
                print("oss upload faild %s" % osspath)

#下载数据,操作oss类


def oss2_data(oss_class, datasurl, name):
    if datasurl:
        try:
            print(datasurl)
            res = requests.get(datasurl, timeout=5, verify=False)
            content_name = name
            content_file = res.content
            osspath = oss_class.upload_file(type='content', content_name=content_name, content_file=content_file)
            return osspath
        except Exception as e:
            print(e)
            return None

使用的时候
upload_class = UPLOAD_FILE(subfilename=“******”) # 初始化oss,创建目录
upload_class.up_file(文件名, 本地文件的路径)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值