上传本地文件
# -*- coding: utf-8 -*-
import oss2 # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') # 必须以二进制的方式打开文件,因为需要知道文件包含的字节数。
with open('<yourLocalFile>', 'rb') as fileobj:
# Seek方法用于指定从第1000个字节位置开始读写。上传时会从您指定的第1000个字节位置开始上传,直到文件结束。
fileobj.seek(1000, os.SEEK_SET)
# Tell方法用于返回当前位置。
current = fileobj.tell()
bucket.put_object('<yourObjectName>', fileobj)
简单列举文件
# -*- coding: utf-8 -*-
import oss2
from itertools import islice # 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州为例,其它Region请按实际情况填写。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>') for b in islice(oss2.ObjectIterator(bucket), 10):
print(b.key)
如何获取OSS文件的访问地址?
OSS的Object地址由域名、bucketName、object组成,具体格式为:bucketName.endpoint/object。
例如:杭州地域的bucket:aaa,其中有一个key为123.txt的Object,如果要通过外网访问,拼接后的链接地址为: aaa.oss-cn-hangzhou.aliyuncs.com/123.txt。其中各个地域的Bucket对应的endpoint,如果Bucket的ACL权限为私有的情况下则需要在上述基础上至少还要包含Signature,Expires,OSSAccessKeyId三个参数。
如果Bucket绑定了自定义域名例如abc.example.com,客户希望通过自定义域名来访问,只需要将“aaa.oss-cn-hangzhou.aliyuncs.com”更改为abc.example.com即可。具体的自定义域名可以在下图中的域名管理页面中查看。