Skip to content

Commit 86225cc

Browse files
authored
Merge pull request #17 from NightRain233/master
1. 修改readme 2. 添加example_demo
2 parents 5619eb2 + 04553aa commit 86225cc

20 files changed

+935
-306
lines changed

README.md

Lines changed: 552 additions & 229 deletions
Large diffs are not rendered by default.

examples/common.py

Lines changed: 0 additions & 7 deletions
This file was deleted.

examples/example.jpg

-138 KB
Binary file not shown.

examples/example_bucketmanager.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
public_key = '' #账户公钥
2+
private_key = '' #账户私钥
3+
4+
from ufile import bucketmanager
5+
6+
bucketmanager_handler = bucketmanager.BucketManager(public_key, private_key)
7+
8+
# 创建新的bucket
9+
bucketname = '' #创建的空间名称,命名规范参见https://docs.ucloud.cn/api/ufile-api/create_bucket
10+
region = 'cn-bj'#空间所在的地理区域,详细信息见https://docs.ucloud.cn/ufile/introduction/region
11+
ret, resp = bucketmanager_handler.createbucket(bucketname, region,'public')
12+
print(ret)
13+
14+
# 删除bucket
15+
bucketname = '' #待删除的空间名称
16+
ret, resp = bucketmanager_handler.deletebucket(bucketname)
17+
print(ret)
18+
19+
# 获取bucket信息
20+
bucketname = '' # 待查询的空间名称
21+
ret, resp = bucketmanager_handler.describebucket(bucketname)
22+
print(ret)
23+
24+
# 更改bucket属性
25+
bucketname = '' # 待更改的私有空间名称
26+
ret, resp = bucketmanager_handler.updatebucket(bucketname, 'public')
27+
print(ret)

examples/example_class_switch_file.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
public_key = '' #账户公钥
2+
private_key = '' #账户私钥
3+
4+
bucket = '' #空间名称
5+
local_file = '' #本地文件名
6+
put_key = '' #上传文件在空间中的名称
7+
STANDARD = 'STANDARD' #标准文件类型
8+
IA = 'IA' #低频文件类型
9+
10+
from ufile import filemanager
11+
12+
putufile_handler = filemanager.FileManager(public_key, private_key)
13+
classswitch_handler = filemanager.FileManager(public_key, private_key)
14+
15+
# 普通上传文件至空间
16+
header = dict()
17+
header['X-Ufile-Storage-Class'] = STANDARD
18+
ret, resp = putufile_handler.putfile(bucket, put_key, local_file, header=header)
19+
assert resp.status_code == 200
20+
21+
# 标准文件类型转换为低频文件类型
22+
ret, resp = classswitch_handler.class_switch_file(bucket, put_key, IA)
23+
assert resp.status_code == 200

examples/example_compare_file_etag.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
from ufile import filemanager
2+
3+
public_key = '' #账户公钥
4+
private_key = '' #账户私钥
5+
6+
bucket = '' #添加空间名称
7+
put_key = '' #添加远程文件key
8+
local_file='' #添加本地文件路径
9+
10+
compare_handler = filemanager.FileManager(public_key, private_key)
11+
result=compare_handler.compare_file_etag(bucket,put_key,local_file)
12+
if result==True:
13+
print('etag are the same!')
14+
else:
15+
print('etag are different!')

examples/example_copy.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
public_key = '' #账户公钥
2+
private_key = '' #账户私钥
3+
bucket = '' #空间名称
4+
key = '' #目的文件在空间中的名称
5+
srcbucket = '' #源文件所在空间名称
6+
srckey = '' #源文件名称
7+
8+
from ufile import filemanager
9+
10+
copyufile_handler = filemanager.FileManager(public_key, private_key)
11+
12+
# 拷贝文件
13+
ret, resp = copyufile_handler.copy(bucket, key, srcbucket, srckey)
14+
assert resp.status_code == 200

examples/example_deletefile.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
public_key = '' #账户公钥
2+
private_key = '' #账户私钥
3+
4+
bucket = '' #空间名称
5+
delete_key = '' #文件在空间中的名称
6+
7+
from ufile import filemanager
8+
9+
deleteufile_handler = filemanager.FileManager(public_key, private_key)
10+
11+
# 删除空间的文件
12+
ret, resp = deleteufile_handler.deletefile(bucket, delete_key)
13+
assert resp.status_code == 204

examples/example_downloadfile.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
public_key = '' #账户公钥
2+
private_key = '' #账户私钥
3+
4+
public_bucket = '' #公共空间名称
5+
private_bucket = '' #私有空间名称
6+
public_savefile = '' #保存文件名
7+
private_savefile = '' #保存文件名
8+
range_savefile = '' #保存文件名
9+
put_key = '' #文件在空间中的名称
10+
stream_key = '' #文件在空间中的名称
11+
12+
from ufile import filemanager
13+
14+
downloadufile_handler = filemanager.FileManager(public_key, private_key)
15+
16+
# 从公共空间下载文件
17+
ret, resp = downloadufile_handler.download_file(public_bucket, put_key, public_savefile, isprivate=False)
18+
assert resp.status_code == 200
19+
20+
# 从私有空间下载文件
21+
ret, resp = downloadufile_handler.download_file(private_bucket, put_key, private_savefile)
22+
assert resp.status_code == 200
23+
24+
# 下载包含文件范围请求的文件
25+
ret, resp = downloadufile_handler.download_file(public_bucket, put_key, range_savefile, isprivate=False, expires=300, content_range=(0, 15))
26+
assert resp.status_code == 206
27+
28+
# 从所在region为上海二的私有空间下载文件
29+
SH2_bucket = ''
30+
SH2_put_key = ''
31+
SH2_private_savefile = ''
32+
SH2_DOWNLOAD_SUFFIX = '.cn-sh2.ufileos.com'
33+
34+
filemgr_sh = filemanager.FileManager(public_key, private_key, download_suffix=SH2_DOWNLOAD_SUFFIX )
35+
ret, resp = filemgr_sh.download_file(SH2_bucket, SH2_put_key, SH2_private_savefile)
36+
assert resp.status_code == 200

examples/example_filemanager.py

Lines changed: 0 additions & 46 deletions
This file was deleted.

examples/example_getfilelist.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
public_key = '' #账户公钥
2+
private_key = '' #账户私钥
3+
4+
bucket = '' #空间名称
5+
6+
from ufile import filemanager
7+
8+
getfilelist_hander = filemanager.FileManager(public_key, private_key)
9+
10+
prefix='' #文件前缀
11+
limit=10 #文件列表数目
12+
marker='' #返回以字母排序后,大于marker的文件列表
13+
ret, resp = getfilelist_hander.getfilelist(bucket, prefix=prefix, limit=limit, marker=marker)
14+
assert resp.status_code == 200
15+
for object in ret["DataSet"]:
16+
print(object)
17+
18+
# 根据返回值'NextMarker'循环遍历获得所有结果(若一次查询无法获得所有结果)
19+
while True:
20+
ret, resp = getfilelist_hander.getfilelist(bucket, prefix=prefix, limit=limit, marker=marker)
21+
assert resp.status_code == 200
22+
23+
for object in ret["DataSet"]:#
24+
print(object)
25+
26+
marker = ret['NextMarker']
27+
if len(marker) <= 0 or len(ret['DataSet']) < limit:
28+
break

examples/example_headfile.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
public_key = '' #账户公钥
2+
private_key = '' #账户私钥
3+
4+
bucket = '' #空间名称
5+
head_key = '' #文件在空间中的名称
6+
7+
from ufile import filemanager
8+
9+
headfile_handler = filemanager.FileManager(public_key, private_key)
10+
11+
# 查询文件基本信息
12+
ret, resp = headfile_handler.head_file(bucket, head_key)
13+
assert resp.status_code == 200
14+
print(resp)

examples/example_listobjects.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
public_key = '' #账户公钥
2+
private_key = '' #账户私钥
3+
4+
bucket = '' #空间名称
5+
6+
from ufile import filemanager
7+
8+
listobjects_hander = filemanager.FileManager(public_key, private_key)
9+
10+
prefix='' #以prefix作为前缀的目录文件列表
11+
maxkeys=100 #指定返回目录文件列表的最大数量,默认值为100,不超过1000
12+
marker='' #返回以字母排序后,大于marker的目录文件列表
13+
delimiter='/' #delimiter是目录分隔符,当前只支持"/"和"",当Delimiter设置为"/"且prefiex以"/"结尾时,返回prefix目录下的子文件,当delimiter设置为""时,返回以prefix作为前缀的文件
14+
15+
# 普通使用(一次查询即可得到所有结果)
16+
def once_list():
17+
ret, resp = listobjects_hander.listobjects(bucket, prefix=prefix, maxkeys=maxkeys, marker=marker, delimiter=delimiter)
18+
assert resp.status_code == 200
19+
20+
for object in ret['Contents']:#子文件列表
21+
print(object)
22+
23+
for object in ret['CommonPrefixes']:#子目录列表
24+
print(object)
25+
26+
# 因为一次查询返回数量存在最大限制,所以若一次查询无法获得所有结果,则根据返回值'NextMarker'循环遍历获得所有结果
27+
def loop_list():
28+
while True:
29+
ret, resp = listobjects_hander.listobjects(bucket, prefix=prefix, maxkeys=maxkeys, marker=marker, delimiter=delimiter)
30+
assert resp.status_code == 200
31+
32+
for object in ret['Contents']:#子文件列表
33+
print(object)
34+
35+
for object in ret['CommonPrefixes']:#子目录列表
36+
print(object)
37+
38+
marker = ret['NextMarker']
39+
if len(marker) <= 0 or maxkeys < len(ret['Contents']):
40+
break
Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,34 @@
1-
from common import *
2-
from ufile import config, multipartuploadufile
1+
public_key = '' #账户公钥
2+
private_key = '' #账户私钥
33

4-
# 运行时, 请自行修改
5-
BUCKET_BJ = 'lovecrazy-private'
6-
BJ_UPLOAD_SUFFIX = '.cn-bj.ufileos.com'
4+
bucket = '' #空间名称
5+
sharding_key = '' #上传文件在空间中的名称
6+
local_file = '' #本地文件名
77

8-
BUCKET_SH2 = 'lovecrazy'
9-
SH2_UPLOAD_SUFFIX = '.cn-sh2.ufileos.com'
8+
from ufile import multipartuploadufile
109

11-
# 待上传文件路径,最好填绝对路径
12-
UPLOAD_FILE_PATH = './example.jpg'
10+
multipartuploadufile_handler = multipartuploadufile.MultipartUploadUFile(public_key, private_key)
1311

14-
# 设置默认参数
15-
config.set_default(uploadsuffix=BJ_UPLOAD_SUFFIX)
16-
config.set_default(downloadsuffix=BJ_UPLOAD_SUFFIX)
17-
config.set_default(connection_timeout=60)
18-
config.set_default(expires=60)
19-
config.set_default(md5=True)
12+
# 分片上传一个全新的文件
13+
ret, resp = multipartuploadufile_handler.uploadfile(bucket, sharding_key, local_file)
14+
while True:
15+
if resp.status_code == 200: # 分片上传成功
16+
break
17+
elif resp.status_code == -1: # 网络连接问题,续传
18+
ret, resp = multipartuploadufile_handler.resumeuploadfile()
19+
else: # 服务或者客户端错误
20+
print(resp.error)
21+
break
2022

21-
# 上传到北京的bucket
22-
mup_bj = multipartuploadufile.MultipartUploadUFile(PUBLIC_KEY, PRIVATE_KEY)
23-
_, resp = mup_bj.uploadfile(BUCKET_BJ, 'python-sdk/examples/multipartput-key', UPLOAD_FILE_PATH)
24-
assert resp.status_code == 200
25-
26-
# 上传到上海的bucket
27-
mup_sh = multipartuploadufile.MultipartUploadUFile(PUBLIC_KEY, PRIVATE_KEY, upload_suffix=SH2_UPLOAD_SUFFIX)
28-
_, resp = mup_sh.uploadfile(BUCKET_SH2, 'python-sdk/examples/multipartput-key', UPLOAD_FILE_PATH)
29-
assert resp.status_code == 200
23+
# 分片上传一个全新的二进制数据流
24+
from io import BytesIO
25+
bio = BytesIO(u'你好'.encode('utf-8'))
26+
ret, resp = multipartuploadufile_handler.uploadstream(bucket, sharding_key, bio)
27+
while True:
28+
if resp.status_code == 200: # 分片上传成功
29+
break
30+
elif resp.status_code == -1: # 网络连接问题,续传
31+
ret, resp = multipartuploadufile_handler.resumeuploadstream()
32+
else: # 服务器或者客户端错误
33+
print(resp.error)
34+
break

examples/example_postfile.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
public_key = '' #账户公钥
2+
private_key = '' #账户私钥
3+
4+
bucket = '' #空间名称
5+
local_file = '' #本地文件名
6+
post_key = '' #上传文件在空间中的名称
7+
8+
from ufile import filemanager
9+
10+
postufile_handler = filemanager.FileManager(public_key, private_key)
11+
12+
# 表单上传文件至空间
13+
ret, resp = postufile_handler.postfile(bucket, post_key, local_file)
14+
assert resp.status_code == 200

examples/example_putfile.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
public_key = '' #账户公钥
2+
private_key = '' #账户私钥
3+
4+
bucket = '' #空间名称
5+
local_file = '' #本地文件名
6+
put_key = '' #上传文件在空间中的名称
7+
8+
from ufile import filemanager
9+
10+
putufile_handler = filemanager.FileManager(public_key, private_key)
11+
12+
# 普通上传文件至空间
13+
ret, resp = putufile_handler.putfile(bucket, put_key, local_file, header=None)
14+
assert resp.status_code == 200
15+
16+
# 普通上传二进制数据流至空间
17+
from io import BytesIO
18+
bio = BytesIO(u'Do be a good man'.encode('utf-8')) #二进制数据流
19+
stream_key = '' #上传数据流在空间中的名称
20+
ret, resp = putufile_handler.putstream(bucket, stream_key, bio)
21+
assert resp.status_code == 200
22+
23+
# 普通上传文件到所在region为上海二的空间
24+
SH2_bucket = ''
25+
SH2_UPLOAD_SUFFIX = '.cn-sh2.ufileos.com'
26+
27+
filemgr_sh = filemanager.FileManager(public_key, private_key, upload_suffix=SH2_UPLOAD_SUFFIX)
28+
ret, resp = filemgr_sh.putfile(SH2_bucket , put_key, local_file, header=None)
29+
assert resp.status_code == 200

0 commit comments

Comments
 (0)