首先需要有python环境,然后需要安装pandas,xlrd,oss2, 使用pip也可,我是安装的anaconda,所以使用的conda安装。
由于是远程文件,所以需要使用流式上传
https://help.aliyun.com/document_detail/88426.html?spm=a2c4g.11174283.6.829.1c907da2q1NI0J
import oss2
import requests
def uploadUrl(url, host):
# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('key', 'secret')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-beijing.aliyuncs.com', 'bucket')
# requests.get返回的是一个可迭代对象(Iterable),此时Python SDK会通过Chunked Encoding方式上传。
onlineUrl = host + url
pic = requests.get(onlineUrl)
print(onlineUrl + '\n')
bucket.put_object(url, pic.content)
import pandas as pd
from oss import uploadUrl
#这个会直接默认读取到这个Excel的第一个表单
df = pd.read_excel('pic.xlsx')
#读所有行的第6列的值,下标从0开始
data = df.iloc[:,5]
urls=data.values
for url in urls:
uploadUrl(url, 'https://www.xxx.com/upload/')
#print(url + '\n')
直接上传本地图片
import oss2
import os
# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('keyid', 'keysecret')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-beijing.aliyuncs.com', 'bucketname')
path='User2'
dirs=os.listdir(path)
# 必须以二进制的方式打开文件,因为需要知道文件包含的字节数。
for fileobj in dirs:
print(fileobj)
bucket.put_object_from_file('avatar/' + fileobj, 'User2/' + fileobj)