Skip to content

Commit dcb96c9

Browse files
authored
Merge pull request #14 from a630140621/v3.2.x
v3.2.4
2 parents 3284891 + 7db49f2 commit dcb96c9

28 files changed

Lines changed: 373 additions & 232 deletions

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ build/
88
requests
99
test_ufile/*.log
1010
test_ufile/*.txt
11-
docs/build/
11+
docs/build/
12+
__pycache__/

CHANGELOG/CHANGELOG-3.2.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
## 3.2.4 (Oct 27, 2020)
2+
* [optimization] 支持上传和下载时指定后缀
3+
* [bug fix] 修复默认参数为可变值, 导致行为和预期不一致的问题
4+
* [bug fix] 修复其他已知问题

README.md

Lines changed: 69 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,35 @@
99

1010
## 文件目录说明
1111

12-
* docs文件夹: 开发文档生成文件
13-
* ufile文件夹: SDK的具体实现
14-
* setup.py: package安装文件
15-
* test_ufile文件夹: 测试文件以及demo示例
12+
* docs文件夹: 开发文档生成文件
13+
* ufile文件夹: SDK的具体实现
14+
* setup.py: package安装文件
15+
* test_ufile文件夹: 测试文件
16+
* examples: 示例代码
1617

17-
## 使用方法
18+
## 安装
19+
20+
### 本地安装
21+
22+
```bash
23+
$ git clone https://github.com/ucloud/ufile-sdk-python.git
24+
$ git checkout <tag/branch>
25+
$ cd ufile-sdk-python
26+
$ python setup.py install
27+
```
28+
29+
### 使用 pip 安装
30+
31+
```bash
32+
$ pip install ufile
33+
# 如果你要使用 pre-release 版本
34+
$ pip install --pre ufile
35+
```
1836

19-
> `python setup.py install` (本地安装)
20-
>
21-
> `pip install ufile` (pip安装,须首先安装pip)
22-
2337
**注意:在国内的 pip 源会由于网络问题无法更新,建议加上国内的 python 源。**
2438
具体请见:[如何添加 python 国内源?](https://www.baidu.com/s?wd=python%20%E5%9B%BD%E5%86%85%E6%BA%90&rsv_spt=1&rsv_iqid=0xd4c874b700022c35&issp=1&f=8&rsv_bp=1&rsv_idx=2&ie=utf-8&rqlang=cn&tn=baiduhome_pg&rsv_enter=0&rsv_t=ca7cGiKHZYyi4WMSjK1f%2BXazzuAjqbqCTbXjSrEq6oiaXwF3im1hQl9E9xE9fKWkDccY&oq=python%2520%25E5%259B%25BD%25E5%2586%2585%25E6%25BA%2590&rsv_pq=ba65a2f20001ea73)
2539

26-
## 开发文档生成
40+
## 开发文档生成
2741

2842
docs文件夹包含基于sphinx的开发文档生成文件,在此文件夹下可通过运行make html命令可生成build目录,build/html目录即为开发文档
2943

@@ -33,14 +47,16 @@ ufile文件夹包含SDK的具体实现,该文件夹亦是名为ufile的package
3347

3448
### 公共参数说明
3549

36-
~~~~~~~~~~~~~~~{.py}
37-
public_key = '' #账户公私钥中的公钥
38-
private_key = '' #账户公私钥中的私钥
39-
~~~~~~~~~~~~~~~
50+
```python
51+
public_key = '' #公钥或token
52+
private_key = '' #私钥或token
53+
```
54+
55+
[如何创建一个token?](https://console.ucloud.cn/ufile/token)
4056

41-
### 设置参数
57+
### 设置默认参数
4258

43-
~~~~~~~~~~~~~~~{.py}
59+
```python
4460
from ufile import config
4561

4662
#设置上传host后缀,外网可用后缀形如 .cn-bj.ufileos.com(cn-bj为北京地区,其他地区具体后缀可见控制台:对象存储-单地域空间管理-存储空间域名)
@@ -53,26 +69,28 @@ config.set_default(connection_timeout=60)
5369
config.set_default(expires=60)
5470
#设置上传文件是否校验md5
5571
config.set_default(md5=True)
56-
~~~~~~~~~~~~~~~
72+
```
73+
74+
* 如果在实例化 FileManager 和 MultipartUploadUFile 实例时传入相关参数,则生成的实例会使用传入的值,而不是此处设置的默认值。
5775

5876
### 设置日志文件
5977

60-
~~~~~~~~~~~~~~~{.py}
78+
```python
6179
from ufile import logger
6280

6381
locallogname = '' #完整本地日志文件名
6482
logger.set_log_file(locallogname)
65-
~~~~~~~~~~~~~~~
83+
```
6684

6785
### 支持普通上传
6886

6987
* demo 程序
7088

71-
~~~~~~~~~~~~~~~{.py}
72-
public_bucket = '' #公共空间名称
73-
private_bucket = '' #私有空间名称
74-
localfile = '' #本地文件名
75-
put_key = '' #上传文件在空间中的名称
89+
```python
90+
public_bucket = '' #公共空间名称
91+
private_bucket = '' #私有空间名称
92+
localfile = '' #本地文件名
93+
put_key = '' #上传文件在空间中的名称
7694

7795
from ufile import filemanager
7896

@@ -91,7 +109,7 @@ from io import BytesIO
91109
bio = BytesIO(u'Do be a good man'.encode('utf-8')) #二进制数据流
92110
stream_key = '' #上传数据流在空间中的名称
93111
ret, resp = putufile_handler.putstream(public_bucket, stream_key, bio)
94-
~~~~~~~~~~~~~~~
112+
```
95113

96114
* HTTP 返回状态码
97115

@@ -106,7 +124,7 @@ ret, resp = putufile_handler.putstream(public_bucket, stream_key, bio)
106124

107125
* demo程序
108126

109-
~~~~~~~~~~~~~~~{.py}
127+
```python
110128
public_bucket = '' #公共空间名称
111129
private_bucket = '' #私有空间名称
112130
localfile = '' #本地文件名
@@ -123,7 +141,7 @@ assert resp.status_code == 200
123141
# 表单上传至私有空间
124142
ret, resp = postufile_handler.postfile(private_bucket, post_key, localfile)
125143
assert resp.status_code == 200
126-
~~~~~~~~~~~~~~~
144+
```
127145

128146
* HTTP 返回状态码
129147

@@ -138,7 +156,7 @@ assert resp.status_code == 200
138156

139157
* demo程序
140158

141-
~~~~~~~~~~~~~~~{.py}
159+
```python
142160
public_bucket = '' #公共空间名称
143161
existkey = '' #添加上传文件在空间中的名称
144162
nonexistkey = '' #添加上传文件在空间中的名称
@@ -156,7 +174,7 @@ assert resp.status_code == 200
156174
# 秒传不存在文件
157175
ret, resp = uploadhitufile_handler.uploadhit(public_bucket, nonexistkey, nonexistfile)
158176
assert resp.status_code == 404
159-
~~~~~~~~~~~~~~~
177+
```
160178

161179
* HTTP 状态返回码
162180

@@ -172,7 +190,7 @@ assert resp.status_code == 404
172190

173191
* demo程序
174192

175-
~~~~~~~~~~~~~~~{.py}
193+
```python
176194
public_bucket = '' #公共空间名称
177195
private_bucket = '' #私有空间名称
178196
public_savefile = '' #保存文件名
@@ -196,7 +214,7 @@ assert resp.status_code == 200
196214
# 下载包含文件范围请求的文件
197215
ret, resp = downloadufile_handler.download_file(public_bucket, put_key, range_savefile, isprivate=False, expires=300, content_range=(0, 15))
198216
assert resp.status_code == 206
199-
~~~~~~~~~~~~~~~
217+
```
200218

201219
* HTTP 返回状态码
202220

@@ -214,7 +232,7 @@ assert resp.status_code == 206
214232

215233
* demo程序
216234

217-
~~~~~~~~~~~~~~~{.py}
235+
```python
218236
public_bucket = '' #公共空间名称
219237
private_bucekt = '' #私有空间名称
220238
delete_key = '' #文件在空间中的名称
@@ -230,7 +248,7 @@ assert resp.status_code == 204
230248
# 删除私有空间的文件
231249
ret, resp = deleteufile_handler.deletefile(private_bucket, delete_key)
232250
assert resp.status_code == 204
233-
~~~~~~~~~~~~~~~
251+
```
234252

235253
* HTTP 返回状态码
236254

@@ -244,7 +262,7 @@ assert resp.status_code == 204
244262

245263
* demo程序
246264

247-
~~~~~~~~~~~~~~~{.py}
265+
```python
248266
public_bucket = '' #公共空间名称
249267
sharding_key = '' #上传文件在空间中的名称
250268
localfile = '' #本地文件名
@@ -276,7 +294,7 @@ elif resp.status_code == -1: # 网络连接问题,续传
276294
else: # 服务器或者客户端错误
277295
print(resp.error)
278296
break
279-
~~~~~~~~~~~~~~~
297+
```
280298

281299
* HTTP 返回状态码
282300

@@ -291,7 +309,7 @@ else: # 服务器或者客户端错误
291309

292310
* demo 程序
293311

294-
~~~~~~~~~~~~~~~{.py}
312+
```python
295313
public_bucket = '' #公共空间名称
296314
localfile = '' #本地文件名
297315
put_key = '' #上传文件在空间中的名称
@@ -309,7 +327,7 @@ assert rest.status_code == 200
309327
# 解冻冷存文件
310328
ret, resp = restorefile_handler.restore_file(public_bucket, put_key)
311329
assert resp.status_code == 200
312-
~~~~~~~~~~~~~~~
330+
```
313331

314332
* HTTP 返回状态码
315333

@@ -324,7 +342,7 @@ assert resp.status_code == 200
324342

325343
* demo 程序
326344

327-
~~~~~~~~~~~~~~~{.py}
345+
```python
328346
public_bucket = '' #公共空间名称
329347
localfile = '' #本地文件名
330348
put_key = '' #上传文件在空间中的名称
@@ -343,7 +361,7 @@ assert rest.status_code == 200
343361
# 标准文件类型转换为低频文件类型
344362
ret, resp = classswitch_handler.class_switch_file(public_bucket, put_key, IA)
345363
assert resp.status_code == 200
346-
~~~~~~~~~~~~~~~
364+
```
347365

348366
* HTTP 返回状态码
349367

@@ -356,7 +374,7 @@ assert resp.status_code == 200
356374

357375
### 比较本地文件和远程文件etag
358376

359-
~~~~~~~~~~~~~~~{.py}
377+
```python
360378
from ufile import filemanager
361379

362380
public_bucket = '' #添加公共空间名称
@@ -369,11 +387,11 @@ if result==True:
369387
logger.info('\netag are the same!')
370388
else:
371389
logger.info('\netag are different!')
372-
~~~~~~~~~~~~~~~
390+
```
373391

374392
### 获取文件列表
375393

376-
~~~~~~~~~~~~~~~{.py}
394+
```python
377395
bucket = '' #空间名称
378396

379397
from ufile import filemanager
@@ -385,11 +403,11 @@ limit=10 #文件列表数目
385403
marker='' #文件列表起始位置
386404
ret, resp = getfilelist_hander.getfilelist(bucket, prefix=prefix, limit=limit, marker=marker)
387405
assert resp.status_code == 200
388-
~~~~~~~~~~~~~~~
406+
```
389407

390408
### 获取目录文件列表
391409

392-
~~~~~~~~~~~~~~~{.py}
410+
```python
393411
bucket = '' #空间名称
394412

395413
from ufile import filemanager
@@ -403,13 +421,13 @@ delimiter='/' #delimiter是目录分隔符,当前只支持"/"和" ",当Delim
403421

404422
ret, resp = listobjects_hander.listobjects(bucket, prefix=prefix, maxkeys=maxkeys, marker=marker, delimiter=delimiter)
405423
assert resp.status_code == 200
406-
~~~~~~~~~~~~~~~
424+
```
407425

408426
### 支持拷贝
409427

410428
* demo 程序
411429

412-
~~~~~~~~~~~~~~~{.py}
430+
```python
413431
public_bucket = '' #公共空间名称
414432
key = '' #目的文件在空间中的名称
415433
srcbucket = '' #源文件所在空间名称
@@ -422,7 +440,7 @@ copyufile_handler = filemanager.FileManager(public_key, private_key)
422440
# 拷贝文件
423441
ret, resp = copyufile_handler.copy(public_bucket, key, srcbucket, srckey)
424442
assert resp.status_code == 200
425-
~~~~~~~~~~~~~~~
443+
```
426444

427445
* HTTP 返回状态码
428446

@@ -437,7 +455,7 @@ assert resp.status_code == 200
437455

438456
* demo 程序
439457

440-
~~~~~~~~~~~~~~~{.py}
458+
```python
441459
public_bucket = '' #公共空间名称
442460
key = '' #源文件在空间中的名称
443461
newkey = '' #目的文件在空间中的名称
@@ -449,7 +467,7 @@ renameufile_handler = filemanager.FileManager(public_key, private_key)
449467
# 拷贝文件
450468
ret, resp = renameufile_handler.rename(public_bucket, key, newkey, 'true')
451469
assert resp.status_code == 200
452-
~~~~~~~~~~~~~~~
470+
```
453471

454472
* HTTP 返回状态码
455473

@@ -463,7 +481,7 @@ assert resp.status_code == 200
463481

464482
### 空间管理
465483

466-
~~~~~~~~~~~~~~~{.py}
484+
```python
467485
from ufile import bucketmanager
468486

469487
bucketmanager_handler = bucketmanager.BucketManager(public_key, private_key)
@@ -486,4 +504,4 @@ print(ret)
486504
# 更改bucket属性
487505
bucketname = '' # 待更改的私有空间名称
488506
bucketmanager_handler.updatebucket(bucketname, 'public'):
489-
~~~~~~~~~~~~~~~
507+
```

examples/common.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# from ufile.compact import *
2+
import ufile
3+
4+
print('ufile package version =', ufile.__version__)
5+
6+
PUBLIC_KEY = '<your public key>' #添加自己的账户公钥
7+
PRIVATE_KEY = '<your private key>' #添加自己的账户私钥

examples/example.jpg

138 KB
Loading

0 commit comments

Comments
 (0)