使用python上传图片到OSS|支持多目录上传oss

前言

考虑到图片放到应用服务器上会导致应用服务器卡顿,所以把图片存储到oss上,但是文件太多就很麻烦了,他仅仅支持批量一百张,单次,而且会很卡顿。

安装OSS2

操作pip3 install oss2 即可

 

扫描多个目录收集文件

def fileListFunc(filePathList):
    fileList = []
    for filePath in filePathList:
        for top, dirs, nondirs in os.walk(filePath):
            for item in nondirs:
                fileList.append(os.path.join(top, item))
    return fileList

上完整代码

以下代码对文件文件自动依次命名,方便使用。

# -*- coding: utf-8 -*-
import os
import oss2

# 首先初始化AccessKeyId、AccessKeySecret、Endpoint等信息。
# 通过环境变量获取,或者把诸如“<你的AccessKeyId>”替换成真实的AccessKeyId等。
#
access_key_id = os.getenv('OSS_TEST_ACCESS_KEY_ID', 'DvJ——————test')
access_key_secret = os.getenv('OSS_TEST_ACCESS_KEY_SECRET', 'VI8TF---test')
bucket_name = os.getenv('OSS_TEST_BUCKET', 'bucket_name_test')
endpoint = os.getenv('OSS_TEST_ENDPOINT', 'oss-cn-beijing.aliyuncs.com')


# 确认上面的参数都填写正确了
for param in (access_key_id, access_key_secret, bucket_name, endpoint):
    assert '<' not in param, '请设置参数:' + param

# 创建Bucket对象,所有Object相关的接口都可以通过Bucket对象来进行
bucket = oss2.Bucket(oss2.Auth(access_key_id, access_key_secret), endpoint, bucket_name)

# 上传一段字符串。Object名是motto.txt,内容是一段名言。去根目录下找,或者直接访问就能确认是否上传成功
# bucket.put_object('motto.txt2', 'cont is empty')

def scran_file(path):
    file_list = fileListFunc(path)
    print(file_list)
    n = 500
    for file in file_list:
        if file.find('.jpg') != -1:
            n += 1
            print(file)
            object_name = '202007_mtp_big_' + str(n) + '.' + file.split('\\')[-1].split('.')[1]
            bucket.put_object_from_file(object_name, file)
            print(object_name)
        else:
            print('is other file')

def fileListFunc(filePathList):
    fileList = []
    for filePath in filePathList:
        for top, dirs, nondirs in os.walk(filePath):
            for item in nondirs:
                fileList.append(os.path.join(top, item))
    return fileList

scran_path_list=[r"C:\Users\Baicai\img"]
scran_file(scran_path_list)

只需修改目录即可执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值