11
11
12
12
def put_data (
13
13
up_token , key , data , params = None , mime_type = 'application/octet-stream' , check_crc = False , progress_handler = None ,
14
- fname = None ):
14
+ fname = None , hostscache_dir = None ):
15
15
"""上传二进制流到七牛
16
16
17
17
Args:
@@ -22,6 +22,7 @@ def put_data(
22
22
mime_type: 上传数据的mimeType
23
23
check_crc: 是否校验crc32
24
24
progress_handler: 上传进度
25
+ hostscache_dir: host请求 缓存文件保存位置
25
26
26
27
Returns:
27
28
一个dict变量,类似 {"hash": "<Hash string>", "key": "<Key string>"}
@@ -39,23 +40,24 @@ def put_data(
39
40
final_data = data
40
41
41
42
crc = crc32 (final_data )
42
- return _form_put (up_token , key , final_data , params , mime_type , crc , progress_handler , fname )
43
+ return _form_put (up_token , key , final_data , params , mime_type , crc , hostscache_dir , progress_handler , fname )
43
44
44
45
45
46
def put_file (up_token , key , file_path , params = None ,
46
47
mime_type = 'application/octet-stream' , check_crc = False ,
47
- progress_handler = None , upload_progress_recorder = None , keep_last_modified = False ):
48
+ progress_handler = None , upload_progress_recorder = None , keep_last_modified = False , hostscache_dir = None ):
48
49
"""上传文件到七牛
49
50
50
51
Args:
51
- up_token: 上传凭证
52
- key: 上传文件名
53
- file_path: 上传文件的路径
54
- params: 自定义变量,规格参考 http://developer.qiniu.com/docs/v6/api/overview/up/response/vars.html#xvar
55
- mime_type: 上传数据的mimeType
56
- check_crc: 是否校验crc32
57
- progress_handler: 上传进度
52
+ up_token: 上传凭证
53
+ key: 上传文件名
54
+ file_path: 上传文件的路径
55
+ params: 自定义变量,规格参考 http://developer.qiniu.com/docs/v6/api/overview/up/response/vars.html#xvar
56
+ mime_type: 上传数据的mimeType
57
+ check_crc: 是否校验crc32
58
+ progress_handler: 上传进度
58
59
upload_progress_recorder: 记录上传进度,用于断点续传
60
+ hostscache_dir: host请求 缓存文件保存位置
59
61
60
62
Returns:
61
63
一个dict变量,类似 {"hash": "<Hash string>", "key": "<Key string>"}
@@ -68,19 +70,20 @@ def put_file(up_token, key, file_path, params=None,
68
70
file_name = os .path .basename (file_path )
69
71
modify_time = int (os .path .getmtime (file_path ))
70
72
if size > config ._BLOCK_SIZE * 2 :
71
- ret , info = put_stream (up_token , key , input_stream , file_name , size , params ,
73
+ ret , info = put_stream (up_token , key , input_stream , file_name , size , hostscache_dir , params ,
72
74
mime_type , progress_handler ,
73
75
upload_progress_recorder = upload_progress_recorder ,
74
76
modify_time = modify_time , keep_last_modified = keep_last_modified )
75
77
else :
76
78
crc = file_crc32 (file_path )
77
79
ret , info = _form_put (up_token , key , input_stream , params , mime_type ,
78
- crc , progress_handler , file_name ,
80
+ crc , hostscache_dir , progress_handler , file_name ,
79
81
modify_time = modify_time , keep_last_modified = keep_last_modified )
80
82
return ret , info
81
83
82
84
83
- def _form_put (up_token , key , data , params , mime_type , crc , progress_handler = None , file_name = None , modify_time = None ,
85
+ def _form_put (up_token , key , data , params , mime_type , crc , hostscache_dir = None , progress_handler = None , file_name = None ,
86
+ modify_time = None ,
84
87
keep_last_modified = False ):
85
88
fields = {}
86
89
if params :
@@ -95,7 +98,7 @@ def _form_put(up_token, key, data, params, mime_type, crc, progress_handler=None
95
98
if config .get_default ('default_zone' ).up_host :
96
99
url = config .get_default ('default_zone' ).up_host
97
100
else :
98
- url = config .get_default ('default_zone' ).get_up_host_by_token (up_token )
101
+ url = config .get_default ('default_zone' ).get_up_host_by_token (up_token , hostscache_dir )
99
102
# name = key if key else file_name
100
103
101
104
fname = file_name
@@ -112,7 +115,7 @@ def _form_put(up_token, key, data, params, mime_type, crc, progress_handler=None
112
115
if config .get_default ('default_zone' ).up_host_backup :
113
116
url = config .get_default ('default_zone' ).up_host_backup
114
117
else :
115
- url = config .get_default ('default_zone' ).get_up_host_backup_by_token (up_token )
118
+ url = config .get_default ('default_zone' ).get_up_host_backup_by_token (up_token , hostscache_dir )
116
119
if hasattr (data , 'read' ) is False :
117
120
pass
118
121
elif hasattr (data , 'seek' ) and (not hasattr (data , 'seekable' ) or data .seekable ()):
@@ -124,11 +127,11 @@ def _form_put(up_token, key, data, params, mime_type, crc, progress_handler=None
124
127
return r , info
125
128
126
129
127
- def put_stream (up_token , key , input_stream , file_name , data_size , params = None ,
130
+ def put_stream (up_token , key , input_stream , file_name , data_size , hostscache_dir = None , params = None ,
128
131
mime_type = None , progress_handler = None ,
129
132
upload_progress_recorder = None , modify_time = None , keep_last_modified = False ):
130
- task = _Resume (up_token , key , input_stream , data_size , params , mime_type ,
131
- progress_handler , upload_progress_recorder , modify_time , file_name , keep_last_modified )
133
+ task = _Resume (up_token , key , input_stream , file_name , data_size , hostscache_dir , params , mime_type ,
134
+ progress_handler , upload_progress_recorder , modify_time , keep_last_modified )
132
135
return task .upload ()
133
136
134
137
@@ -140,30 +143,32 @@ class _Resume(object):
140
143
http://developer.qiniu.com/docs/v6/api/reference/up/mkfile.html
141
144
142
145
Attributes:
143
- up_token: 上传凭证
144
- key: 上传文件名
145
- input_stream: 上传二进制流
146
- data_size: 上传流大小
147
- params: 自定义变量,规格参考 http://developer.qiniu.com/docs/v6/api/overview/up/response/vars.html#xvar
148
- mime_type: 上传数据的mimeType
149
- progress_handler: 上传进度
150
- upload_progress_recorder: 记录上传进度,用于断点续传
151
- modify_time: 上传文件修改日期
146
+ up_token: 上传凭证
147
+ key: 上传文件名
148
+ input_stream: 上传二进制流
149
+ data_size: 上传流大小
150
+ params: 自定义变量,规格参考 http://developer.qiniu.com/docs/v6/api/overview/up/response/vars.html#xvar
151
+ mime_type: 上传数据的mimeType
152
+ progress_handler: 上传进度
153
+ upload_progress_recorder: 记录上传进度,用于断点续传
154
+ modify_time: 上传文件修改日期
155
+ hostscache_dir: host请求 缓存文件保存位置
152
156
"""
153
157
154
- def __init__ (self , up_token , key , input_stream , data_size , params , mime_type ,
155
- progress_handler , upload_progress_recorder , modify_time , file_name , keep_last_modified ):
158
+ def __init__ (self , up_token , key , input_stream , file_name , data_size , hostscache_dir , params , mime_type ,
159
+ progress_handler , upload_progress_recorder , modify_time , keep_last_modified ):
156
160
"""初始化断点续上传"""
157
161
self .up_token = up_token
158
162
self .key = key
159
163
self .input_stream = input_stream
164
+ self .file_name = file_name
160
165
self .size = data_size
166
+ self .hostscache_dir = hostscache_dir
161
167
self .params = params
162
168
self .mime_type = mime_type
163
169
self .progress_handler = progress_handler
164
170
self .upload_progress_recorder = upload_progress_recorder or UploadProgressRecorder ()
165
171
self .modify_time = modify_time or time .time ()
166
- self .file_name = file_name
167
172
self .keep_last_modified = keep_last_modified
168
173
# print(self.modify_time)
169
174
# print(modify_time)
@@ -186,7 +191,7 @@ def recovery_from_record(self):
186
191
187
192
try :
188
193
if not record ['modify_time' ] or record ['size' ] != self .size or \
189
- record ['modify_time' ] != self .modify_time :
194
+ record ['modify_time' ] != self .modify_time :
190
195
return 0
191
196
except KeyError :
192
197
return 0
@@ -199,7 +204,7 @@ def upload(self):
199
204
if config .get_default ('default_zone' ).up_host :
200
205
host = config .get_default ('default_zone' ).up_host
201
206
else :
202
- host = config .get_default ('default_zone' ).get_up_host_by_token (self .up_token )
207
+ host = config .get_default ('default_zone' ).get_up_host_by_token (self .up_token , self . hostscache_dir )
203
208
offset = self .recovery_from_record ()
204
209
for block in _file_iter (self .input_stream , config ._BLOCK_SIZE , offset ):
205
210
length = len (block )
@@ -211,7 +216,8 @@ def upload(self):
211
216
if config .get_default ('default_zone' ).up_host_backup :
212
217
host = config .get_default ('default_zone' ).up_host_backup
213
218
else :
214
- host = config .get_default ('default_zone' ).get_up_host_backup_by_token (self .up_token )
219
+ host = config .get_default ('default_zone' ).get_up_host_backup_by_token (self .up_token ,
220
+ self .hostscache_dir )
215
221
if info .need_retry () or crc != ret ['crc32' ]:
216
222
ret , info = self .make_block (block , length , host )
217
223
if ret is None or crc != ret ['crc32' ]:
0 commit comments