@@ -22,8 +22,9 @@ Table of Contents
22
22
* [ 秒传] ( #秒传 )
23
23
* [ 分片上传和断点续传] ( #分片上传和断点续传 )
24
24
* [ 文件下载] ( #文件下载 )
25
+ * [ 查询文件基本信息] ( #查询文件基本信息 )
25
26
* [ 删除文件] ( #删除文件 )
26
- * [ 解冻 ] ( #解冻 )
27
+ * [ 解冻归档文件 ] ( #解冻归档文件 )
27
28
* [ 文件类型转换] ( #文件类型转换 )
28
29
* [ 比较本地文件和远程文件etag] ( #比较本地文件和远程文件etag )
29
30
* [ 获取文件列表] ( #获取文件列表 )
@@ -48,6 +49,8 @@ UFILE-SDK-PYTHON
48
49
├─ufile SDK的具体实现
49
50
```
50
51
52
+ [ 回到目录] ( #table-of-contents )
53
+
51
54
# 安装
52
55
53
56
## 本地安装
@@ -86,6 +89,8 @@ $ pip uninstall ufile
86
89
87
90
docs文件夹包含基于sphinx的开发文档生成文件,在此文件夹下可通过运行make html命令可生成build目录,build/html目录即为开发文档。
88
91
92
+ [ 回到目录] ( #table-of-contents )
93
+
89
94
# 快速使用
90
95
91
96
``` python
@@ -110,7 +115,7 @@ assert resp.status_code == 200
110
115
_, resp = ufile_handler.download_file(bucket, put_key, save_file)
111
116
assert resp.status_code == 200
112
117
113
- # 遍历空间里所有文件
118
+ # 遍历空间里文件(默认数目为20)
114
119
ret, resp = ufile_handler.getfilelist(bucket)
115
120
assert resp.status_code == 200
116
121
for object in ret[" DataSet" ]:
@@ -120,6 +125,7 @@ for object in ret["DataSet"]:
120
125
ret, resp = ufile_handler.deletefile(bucket, put_key)
121
126
assert resp.status_code == 204
122
127
```
128
+ [ 回到目录] ( #table-of-contents )
123
129
124
130
# 参数设置
125
131
@@ -163,6 +169,8 @@ locallogname = '' #完整本地日志文件名
163
169
logger.set_log_file(locallogname)
164
170
```
165
171
172
+ [ 回到目录] ( #table-of-contents )
173
+
166
174
# 示例代码
167
175
168
176
## 存储空间管理
@@ -202,6 +210,8 @@ bucketname = '' # 待更改的私有空间名称
202
210
bucketmanager_handler.updatebucket(bucketname, ' public' )
203
211
```
204
212
213
+ [ 回到目录] ( #table-of-contents )
214
+
205
215
## 文件(即对象)管理
206
216
207
217
### 普通上传
@@ -244,6 +254,8 @@ ret, resp = putufile_handler.putstream(bucket, stream_key, bio)
244
254
| 403 | API公私钥错误 |
245
255
| 401 | 上传凭证错误 |
246
256
257
+ [ 回到目录] ( #table-of-contents )
258
+
247
259
### 表单上传
248
260
249
261
* 说明
@@ -277,6 +289,8 @@ assert resp.status_code == 200
277
289
| 403 | API公私钥错误 |
278
290
| 401 | 上传凭证错误 |
279
291
292
+ [ 回到目录] ( #table-of-contents )
293
+
280
294
### 秒传
281
295
282
296
* 说明
@@ -317,14 +331,15 @@ assert resp.status_code == 404
317
331
| 401 | 上传凭证错误 |
318
332
| 404 | 文件秒传失败 |
319
333
334
+ [ 回到目录] ( #table-of-contents )
335
+
320
336
### 分片上传和断点续传
321
337
322
338
* 说明
323
339
* 将要上传的文件分成多个数据块(US3 里又称之为 Part)来分别上传,上传完成之后再调将这些 Part 组合成一个 Object 来达到断点续传的效果。
324
340
* 适用场景
325
341
1 . 大文件(大于1GB)的上传。
326
342
2 . 恶劣的网络环境:如果上传的过程中出现了网络错误,可以从失败的Part进行续传。其他上传方式则需要从文件起始位置上传。
327
- 3 . 流式上传:可以在需要上传的文件大小还不确定的情况下开始上传。这种场景在视频监控等行业应用中比较常见。
328
343
* demo程序
329
344
330
345
``` python
@@ -373,6 +388,8 @@ while True:
373
388
| 403 | API公私钥错误 |
374
389
| 401 | 上传凭证错误 |
375
390
391
+ [ 回到目录] ( #table-of-contents )
392
+
376
393
### 文件下载
377
394
378
395
* 说明
@@ -421,6 +438,43 @@ assert resp.status_code == 206
421
438
| 404 | 下载文件或数据不存在 |
422
439
| 416 | 文件范围请求不合法 |
423
440
441
+ [ 回到目录] ( #table-of-contents )
442
+
443
+ ### 查询文件基本信息
444
+
445
+ * 说明
446
+ * 查询文件基本信息:类型、长度、范围、在US3的哈希值。
447
+ * demo程序
448
+
449
+ ``` python
450
+ public_key = ' ' # 账户公钥
451
+ private_key = ' ' # 账户私钥
452
+
453
+ bucket = ' ' # 空间名称
454
+ head_key = ' ' # 文件在空间中的名称
455
+
456
+ from ufile import filemanager
457
+
458
+ headfile_handler = filemanager.FileManager(public_key, private_key)
459
+
460
+ # 查询文件基本信息
461
+ ret, resp = headfile_handler.head_file(bucket, head_key)
462
+ assert resp.status_code == 200
463
+ print (resp)
464
+ ```
465
+
466
+ * HTTP 返回状态码
467
+
468
+ | 状态码 | 描述 |
469
+ | ------ | -------------------- |
470
+ | 200 | 查询文件基本信息成功 |
471
+ | 400 | 不存在的空间 |
472
+ | 403 | API公私钥错误 |
473
+ | 401 | 上传凭证错误 |
474
+ | 404 | 文件不存在 |
475
+
476
+ [ 回到目录] ( #table-of-contents )
477
+
424
478
### 删除文件
425
479
426
480
* 说明
@@ -451,10 +505,13 @@ assert resp.status_code == 204
451
505
| 403 | API公私钥错误 |
452
506
| 401 | 签名错误 |
453
507
454
- ### 解冻
508
+ [ 回到目录] ( #table-of-contents )
509
+
510
+ ### 解冻归档文件
455
511
456
512
* 说明
457
513
* 用于解冻归档类型的文件。
514
+ * 解冻归档文件需要时间,所以归档文件解冻后不能立刻下载。因此如需下载归档文件,请在下载前使用[ 获取文件列表] ( #获取文件列表 ) 获取文件状态,若其返回值RestoreStatus为'Restored',则表示该归档文件已完成解冻。
458
515
* demo 程序
459
516
460
517
``` python
@@ -464,7 +521,7 @@ private_key = '' #账户私钥
464
521
bucket = ' ' # 空间名称
465
522
local_file = ' ' # 本地文件名
466
523
put_key = ' ' # 上传文件在空间中的名称
467
- ARCHIVE = ' ARCHIVE' # 冷存文件类型
524
+ ARCHIVE = ' ARCHIVE' # 归档文件类型
468
525
469
526
from ufile import filemanager
470
527
@@ -487,15 +544,17 @@ assert resp.status_code == 200
487
544
| 状态码 | 描述 |
488
545
| ------ | ------------------------------ |
489
546
| 200 | 文件解冻成功 |
490
- | 400 | 不存在的空间 或 文件类型非冷存 |
547
+ | 400 | 不存在的空间 或 文件类型非归档 |
491
548
| 403 | API公私钥错误 |
492
549
| 401 | 上传凭证错误 |
493
550
551
+ [ 回到目录] ( #table-of-contents )
552
+
494
553
### 文件类型转换
495
554
496
555
* 说明
497
- * 用于转换文件的存储类型,可以任意转换文件为标准 、低频、冷存三种存储类型 。
498
- * 注意:冷存文件如果想转换为其他两种类型必须在解冻期内。
556
+ * 用于转换文件的存储类型,可以转换文件为标准 、低频、归档三种存储类型 。
557
+ * 注意:现在不支持低频转为标准以及归档转为标准、低频
499
558
* demo 程序
500
559
501
560
``` python
@@ -530,9 +589,11 @@ assert resp.status_code == 200
530
589
| ------ | --------------------------------------------------- |
531
590
| 200 | 文件转换类型成功 |
532
591
| 400 | 不存在的空间 |
533
- | 403 | API公私钥错误 或 冷存文件尚未解冻不允许转换文件类型 |
592
+ | 403 | API公私钥错误 或 归档文件尚未解冻不允许转换文件类型 |
534
593
| 401 | 上传凭证错误 |
535
594
595
+ [ 回到目录] ( #table-of-contents )
596
+
536
597
### 比较本地文件和远程文件etag
537
598
538
599
* 说明
@@ -557,6 +618,8 @@ else:
557
618
print (' etag are different!' )
558
619
```
559
620
621
+ [ 回到目录] ( #table-of-contents )
622
+
560
623
### 获取文件列表
561
624
562
625
* 说明
@@ -582,6 +645,8 @@ for object in ret["DataSet"]:
582
645
print (object )
583
646
```
584
647
648
+ [ 回到目录] ( #table-of-contents )
649
+
585
650
### 获取目录文件列表
586
651
587
652
* 说明
@@ -607,6 +672,8 @@ ret, resp = listobjects_hander.listobjects(bucket, prefix=prefix, maxkeys=maxkey
607
672
assert resp.status_code == 200
608
673
```
609
674
675
+ [ 回到目录] ( #table-of-contents )
676
+
610
677
### 拷贝
611
678
612
679
* 说明
@@ -639,6 +706,8 @@ assert resp.status_code == 200
639
706
| 403 | API公私钥错误 |
640
707
| 401 | 上传凭证错误 |
641
708
709
+ [ 回到目录] ( #table-of-contents )
710
+
642
711
### 重命名
643
712
644
713
* 说明
@@ -652,13 +721,14 @@ private_key = '' #账户私钥
652
721
bucket = ' ' # 空间名称
653
722
key = ' ' # 源文件在空间中的名称
654
723
newkey = ' ' # 目的文件在空间中的名称
724
+ force = ' true' # string类型, 是否强行覆盖文件,值为'true'会覆盖,其他值则不会,默认值为'true'
655
725
656
726
from ufile import filemanager
657
727
658
728
renameufile_handler = filemanager.FileManager(public_key, private_key)
659
729
660
730
# 重命名文件
661
- ret, resp = renameufile_handler.rename(bucket, key, newkey, ' true ' )
731
+ ret, resp = renameufile_handler.rename(bucket, key, newkey, force )
662
732
assert resp.status_code == 200
663
733
```
664
734
@@ -672,6 +742,8 @@ assert resp.status_code == 200
672
742
| 401 | 上传凭证错误 |
673
743
| 406 | 新文件名已存在 |
674
744
745
+ [ 回到目录] ( #table-of-contents )
746
+
675
747
# 版本记录
676
748
677
749
[ UFileSDK release history] ( https://github.com/ucloud/ufile-sdk-python/blob/master/CHANGELOG/CHANGELOG-3.2.md )
0 commit comments