Skip to content

Commit 7380c8f

Browse files
committed
Merge pull request #193 from songfei9315/master
add fname
2 parents 2ae5418 + 6e75fb7 commit 7380c8f

File tree

3 files changed

+35
-23
lines changed

3 files changed

+35
-23
lines changed

qiniu/services/storage/upload_progress_recorder.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ class UploadProgressRecorder(object):
2424
def __init__(self, record_folder=tempfile.gettempdir()):
2525
self.record_folder = record_folder
2626

27-
def get_upload_record(self, key):
27+
def get_upload_record(self, file_name, key):
28+
29+
key = '{0}/{1}'.format(key, file_name)
30+
2831
record_file_name = base64.b64encode(key.encode('utf-8')).decode('utf-8')
2932
upload_record_file_path = os.path.join(self.record_folder,
3033
record_file_name)
@@ -34,14 +37,16 @@ def get_upload_record(self, key):
3437
json_data = json.load(f)
3538
return json_data
3639

37-
def set_upload_record(self, key, data):
40+
def set_upload_record(self, file_name, key, data):
41+
key = '{0}/{1}'.format(key, file_name)
3842
record_file_name = base64.b64encode(key.encode('utf-8')).decode('utf-8')
3943
upload_record_file_path = os.path.join(self.record_folder,
4044
record_file_name)
4145
with open(upload_record_file_path, 'w') as f:
4246
json.dump(data, f)
4347

44-
def delete_upload_record(self, key):
48+
def delete_upload_record(self, file_name, key):
49+
key = '{0}/{1}'.format(key, file_name)
4550
record_file_name = base64.b64encode(key.encode('utf-8')).decode('utf-8')
4651
record_file_path = os.path.join(self.record_folder,
4752
record_file_name)

qiniu/services/storage/uploader.py

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -51,19 +51,22 @@ def put_file(up_token, key, file_path, params=None,
5151
"""
5252
ret = {}
5353
size = os.stat(file_path).st_size
54+
# fname = os.path.basename(file_path)
5455
with open(file_path, 'rb') as input_stream:
56+
file_name = os.path.basename(file_path)
5557
if size > config._BLOCK_SIZE * 2:
56-
ret, info = put_stream(up_token, key, input_stream, size, params,
58+
ret, info = put_stream(up_token, key, input_stream, file_name, size, params,
5759
mime_type, progress_handler,
5860
upload_progress_recorder=upload_progress_recorder,
5961
modify_time=(int)(os.path.getmtime(file_path)))
6062
else:
6163
crc = file_crc32(file_path) if check_crc else None
62-
ret, info = _form_put(up_token, key, input_stream, params, mime_type, crc, progress_handler)
64+
ret, info = _form_put(up_token, key, input_stream, params, mime_type, crc, progress_handler, file_name)
65+
# ret, info = _form_put(up_token, key, input_stream, params, mime_type, crc, progress_handler)
6366
return ret, info
6467

6568

66-
def _form_put(up_token, key, data, params, mime_type, crc, progress_handler=None):
69+
def _form_put(up_token, key, data, params, mime_type, crc, progress_handler=None, file_name=None):
6770
fields = {}
6871
if params:
6972
for k, v in params.items():
@@ -72,11 +75,14 @@ def _form_put(up_token, key, data, params, mime_type, crc, progress_handler=None
7275
fields['crc32'] = crc
7376
if key is not None:
7477
fields['key'] = key
78+
7579
fields['token'] = up_token
7680
url = 'http://' + config.get_default('default_up_host') + '/'
77-
name = key if key else 'filename'
81+
# name = key if key else file_name
82+
83+
fname = file_name
7884

79-
r, info = http._post_file(url, data=fields, files={'file': (name, data, mime_type)})
85+
r, info = http._post_file(url, data=fields, files={'file': (fname, data, mime_type)})
8086
if r is None and info.need_retry():
8187
if info.connect_failed:
8288
url = 'http://' + config.get_default('default_up_host_backup') + '/'
@@ -86,16 +92,16 @@ def _form_put(up_token, key, data, params, mime_type, crc, progress_handler=None
8692
data.seek(0)
8793
else:
8894
return r, info
89-
r, info = http._post_file(url, data=fields, files={'file': (name, data, mime_type)})
95+
r, info = http._post_file(url, data=fields, files={'file': (fname, data, mime_type)})
9096

9197
return r, info
9298

9399

94-
def put_stream(up_token, key, input_stream, data_size, params=None,
100+
def put_stream(up_token, key, input_stream, file_name, data_size, params=None,
95101
mime_type=None, progress_handler=None,
96102
upload_progress_recorder=None, modify_time=None):
97103
task = _Resume(up_token, key, input_stream, data_size, params, mime_type,
98-
progress_handler, upload_progress_recorder, modify_time)
104+
progress_handler, upload_progress_recorder, modify_time, file_name)
99105
return task.upload()
100106

101107

@@ -119,7 +125,7 @@ class _Resume(object):
119125
"""
120126

121127
def __init__(self, up_token, key, input_stream, data_size, params, mime_type,
122-
progress_handler, upload_progress_recorder, modify_time):
128+
progress_handler, upload_progress_recorder, modify_time, file_name):
123129
"""初始化断点续上传"""
124130
self.up_token = up_token
125131
self.key = key
@@ -130,9 +136,9 @@ def __init__(self, up_token, key, input_stream, data_size, params, mime_type,
130136
self.progress_handler = progress_handler
131137
self.upload_progress_recorder = upload_progress_recorder or UploadProgressRecorder()
132138
self.modify_time = modify_time or time.time()
133-
134-
print(self.modify_time)
135-
print(modify_time)
139+
self.file_name = file_name
140+
# print(self.modify_time)
141+
# print(modify_time)
136142

137143
def record_upload_progress(self, offset):
138144
record_data = {
@@ -142,12 +148,11 @@ def record_upload_progress(self, offset):
142148
}
143149
if self.modify_time:
144150
record_data['modify_time'] = self.modify_time
145-
146-
print(record_data)
147-
self.upload_progress_recorder.set_upload_record(self.key, record_data)
151+
# print(record_data)
152+
self.upload_progress_recorder.set_upload_record(self.file_name, self.key, record_data)
148153

149154
def recovery_from_record(self):
150-
record = self.upload_progress_recorder.get_upload_record(self.key)
155+
record = self.upload_progress_recorder.get_upload_record(self.file_name, self.key)
151156
if not record:
152157
return 0
153158

@@ -157,7 +162,6 @@ def recovery_from_record(self):
157162
return 0
158163
except KeyError:
159164
return 0
160-
161165
self.blockStatus = [{'ctx': ctx} for ctx in record['contexts']]
162166
return record['offset']
163167

@@ -178,7 +182,6 @@ def upload(self):
178182
ret, info = self.make_block(block, length, host)
179183
if ret is None or crc != ret['crc32']:
180184
return ret, info
181-
182185
self.blockStatus.append(ret)
183186
offset += length
184187
self.record_upload_progress(offset)
@@ -203,11 +206,15 @@ def file_url(self, host):
203206
if self.key is not None:
204207
url.append('key/{0}'.format(urlsafe_base64_encode(self.key)))
205208

209+
if self.file_name is not None:
210+
url.append('fname/{0}'.format(urlsafe_base64_encode(self.file_name)))
211+
206212
if self.params:
207213
for k, v in self.params.items():
208214
url.append('{0}/{1}'.format(k, urlsafe_base64_encode(v)))
209-
215+
pass
210216
url = '/'.join(url)
217+
# print url
211218
return url
212219

213220
def make_file(self, host):

test_qiniu.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,7 @@ def test_put_stream(self):
329329
size = os.stat(localfile).st_size
330330
with open(localfile, 'rb') as input_stream:
331331
token = self.q.upload_token(bucket_name, key)
332-
ret, info = put_stream(token, key, input_stream, size, self.params, self.mime_type)
332+
ret, info = put_stream(token, key, input_stream, os.path.basename(__file__), size, self.params, self.mime_type)
333333
print(info)
334334
assert ret['key'] == key
335335

0 commit comments

Comments
 (0)