1111
1212def put_data (
1313 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 ):
1515 """上传二进制流到七牛
1616
1717 Args:
@@ -22,6 +22,7 @@ def put_data(
2222 mime_type: 上传数据的mimeType
2323 check_crc: 是否校验crc32
2424 progress_handler: 上传进度
25+ hostscache_dir: host请求 缓存文件保存位置
2526
2627 Returns:
2728 一个dict变量,类似 {"hash": "<Hash string>", "key": "<Key string>"}
@@ -39,23 +40,24 @@ def put_data(
3940 final_data = data
4041
4142 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 )
4344
4445
4546def put_file (up_token , key , file_path , params = None ,
4647 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 ):
4849 """上传文件到七牛
4950
5051 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: 上传进度
5859 upload_progress_recorder: 记录上传进度,用于断点续传
60+ hostscache_dir: host请求 缓存文件保存位置
5961
6062 Returns:
6163 一个dict变量,类似 {"hash": "<Hash string>", "key": "<Key string>"}
@@ -68,19 +70,20 @@ def put_file(up_token, key, file_path, params=None,
6870 file_name = os .path .basename (file_path )
6971 modify_time = int (os .path .getmtime (file_path ))
7072 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 ,
7274 mime_type , progress_handler ,
7375 upload_progress_recorder = upload_progress_recorder ,
7476 modify_time = modify_time , keep_last_modified = keep_last_modified )
7577 else :
7678 crc = file_crc32 (file_path )
7779 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 ,
7981 modify_time = modify_time , keep_last_modified = keep_last_modified )
8082 return ret , info
8183
8284
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 ,
8487 keep_last_modified = False ):
8588 fields = {}
8689 if params :
@@ -95,7 +98,7 @@ def _form_put(up_token, key, data, params, mime_type, crc, progress_handler=None
9598 if config .get_default ('default_zone' ).up_host :
9699 url = config .get_default ('default_zone' ).up_host
97100 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 )
99102 # name = key if key else file_name
100103
101104 fname = file_name
@@ -112,7 +115,7 @@ def _form_put(up_token, key, data, params, mime_type, crc, progress_handler=None
112115 if config .get_default ('default_zone' ).up_host_backup :
113116 url = config .get_default ('default_zone' ).up_host_backup
114117 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 )
116119 if hasattr (data , 'read' ) is False :
117120 pass
118121 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
124127 return r , info
125128
126129
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 ,
128131 mime_type = None , progress_handler = None ,
129132 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 )
132135 return task .upload ()
133136
134137
@@ -140,30 +143,32 @@ class _Resume(object):
140143 http://developer.qiniu.com/docs/v6/api/reference/up/mkfile.html
141144
142145 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请求 缓存文件保存位置
152156 """
153157
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 ):
156160 """初始化断点续上传"""
157161 self .up_token = up_token
158162 self .key = key
159163 self .input_stream = input_stream
164+ self .file_name = file_name
160165 self .size = data_size
166+ self .hostscache_dir = hostscache_dir
161167 self .params = params
162168 self .mime_type = mime_type
163169 self .progress_handler = progress_handler
164170 self .upload_progress_recorder = upload_progress_recorder or UploadProgressRecorder ()
165171 self .modify_time = modify_time or time .time ()
166- self .file_name = file_name
167172 self .keep_last_modified = keep_last_modified
168173 # print(self.modify_time)
169174 # print(modify_time)
@@ -186,7 +191,7 @@ def recovery_from_record(self):
186191
187192 try :
188193 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 :
190195 return 0
191196 except KeyError :
192197 return 0
@@ -199,7 +204,7 @@ def upload(self):
199204 if config .get_default ('default_zone' ).up_host :
200205 host = config .get_default ('default_zone' ).up_host
201206 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 )
203208 offset = self .recovery_from_record ()
204209 for block in _file_iter (self .input_stream , config ._BLOCK_SIZE , offset ):
205210 length = len (block )
@@ -211,7 +216,8 @@ def upload(self):
211216 if config .get_default ('default_zone' ).up_host_backup :
212217 host = config .get_default ('default_zone' ).up_host_backup
213218 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 )
215221 if info .need_retry () or crc != ret ['crc32' ]:
216222 ret , info = self .make_block (block , length , host )
217223 if ret is None or crc != ret ['crc32' ]:
0 commit comments