Skip to content

Commit 0fe9277

Browse files
committed
use md5 to be the resumable upload recorder key
1 parent 94622de commit 0fe9277

File tree

2 files changed

+18
-19
lines changed

2 files changed

+18
-19
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# -*- coding: utf-8 -*-
22

3-
import base64
3+
import hashlib
44
import json
55
import os
66
import tempfile
@@ -21,33 +21,30 @@ class UploadProgressRecorder(object):
2121
Attributes:
2222
record_folder: 保存上传记录的目录
2323
"""
24+
2425
def __init__(self, record_folder=tempfile.gettempdir()):
2526
self.record_folder = record_folder
2627

2728
def get_upload_record(self, file_name, key):
29+
record_key = '{0}/{1}'.format(key, file_name)
2830

29-
key = '{0}/{1}'.format(key, file_name)
30-
31-
record_file_name = base64.b64encode(key.encode('utf-8')).decode('utf-8')
32-
upload_record_file_path = os.path.join(self.record_folder,
33-
record_file_name)
31+
record_file_name = hashlib.md5(record_key.encode('utf-8')).hexdigest()
32+
upload_record_file_path = os.path.join(self.record_folder, record_file_name)
3433
if not os.path.isfile(upload_record_file_path):
3534
return None
3635
with open(upload_record_file_path, 'r') as f:
3736
json_data = json.load(f)
3837
return json_data
3938

4039
def set_upload_record(self, file_name, key, data):
41-
key = '{0}/{1}'.format(key, file_name)
42-
record_file_name = base64.b64encode(key.encode('utf-8')).decode('utf-8')
43-
upload_record_file_path = os.path.join(self.record_folder,
44-
record_file_name)
40+
record_key = '{0}/{1}'.format(key, file_name)
41+
record_file_name = hashlib.md5(record_key.encode('utf-8')).hexdigest()
42+
upload_record_file_path = os.path.join(self.record_folder, record_file_name)
4543
with open(upload_record_file_path, 'w') as f:
4644
json.dump(data, f)
4745

4846
def delete_upload_record(self, file_name, key):
49-
key = '{0}/{1}'.format(key, file_name)
50-
record_file_name = base64.b64encode(key.encode('utf-8')).decode('utf-8')
51-
record_file_path = os.path.join(self.record_folder,
52-
record_file_name)
53-
os.remove(record_file_path)
47+
record_key = '{0}/{1}'.format(key, file_name)
48+
record_file_name = hashlib.md5(record_key.encode('utf-8')).hexdigest()
49+
upload_record_file_path = os.path.join(self.record_folder, record_file_name)
50+
os.remove(upload_record_file_path)

qiniu/services/storage/uploader.py

+6-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010

1111

1212
def put_data(
13-
up_token, key, data, params=None, mime_type='application/octet-stream', check_crc=False, progress_handler=None, fname=None):
13+
up_token, key, data, params=None, mime_type='application/octet-stream', check_crc=False, progress_handler=None,
14+
fname=None):
1415
"""上传二进制流到七牛
1516
1617
Args:
@@ -160,7 +161,7 @@ def recovery_from_record(self):
160161

161162
try:
162163
if not record['modify_time'] or record['size'] != self.size or \
163-
record['modify_time'] != self.modify_time:
164+
record['modify_time'] != self.modify_time:
164165
return 0
165166
except KeyError:
166167
return 0
@@ -187,8 +188,8 @@ def upload(self):
187188
self.blockStatus.append(ret)
188189
offset += length
189190
self.record_upload_progress(offset)
190-
if(callable(self.progress_handler)):
191-
self.progress_handler(((len(self.blockStatus) - 1) * config._BLOCK_SIZE)+length, self.size)
191+
if (callable(self.progress_handler)):
192+
self.progress_handler(((len(self.blockStatus) - 1) * config._BLOCK_SIZE) + length, self.size)
192193
return self.make_file(host)
193194

194195
def make_block(self, block, block_size, host):
@@ -223,6 +224,7 @@ def make_file(self, host):
223224
"""创建文件"""
224225
url = self.file_url(host)
225226
body = ','.join([status['ctx'] for status in self.blockStatus])
227+
self.upload_progress_recorder.delete_upload_record(self.file_name, self.key)
226228
return self.post(url, body)
227229

228230
def post(self, url, data):

0 commit comments

Comments
 (0)