Fix bigfile upload

This commit is contained in:
shortcutme 2019-04-08 18:11:46 +02:00
parent 447ab47d59
commit 87abdb92e9
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE

View file

@ -112,10 +112,14 @@ class UiRequestPlugin(object):
}) })
def readMultipartHeaders(self, wsgi_input): def readMultipartHeaders(self, wsgi_input):
found = False
for i in range(100): for i in range(100):
line = wsgi_input.readline() line = wsgi_input.readline()
if line == "\r\n": if line == b"\r\n":
found = True
break break
if not found:
raise Exception("No multipart header found")
return i return i
def actionFile(self, file_path, *args, **kwargs): def actionFile(self, file_path, *args, **kwargs):
@ -329,7 +333,7 @@ class ContentManagerPlugin(object):
file_info = self.site.content_manager.getFileInfo(inner_path) file_info = self.site.content_manager.getFileInfo(inner_path)
piecemap_inner_path = helper.getDirname(file_info["content_inner_path"]) + file_info["piecemap"] piecemap_inner_path = helper.getDirname(file_info["content_inner_path"]) + file_info["piecemap"]
self.site.needFile(piecemap_inner_path, priority=20) self.site.needFile(piecemap_inner_path, priority=20)
piecemap = Msgpack.unpack(self.site.storage.open(piecemap_inner_path).read())[helper.getFilename(inner_path)] piecemap = Msgpack.unpack(self.site.storage.open(piecemap_inner_path, "rb").read())[helper.getFilename(inner_path)]
piecemap["piece_size"] = file_info["piece_size"] piecemap["piece_size"] = file_info["piece_size"]
return piecemap return piecemap
@ -455,7 +459,7 @@ class SiteStoragePlugin(object):
piece_num = int(math.ceil(float(file_info["size"]) / file_info["piece_size"])) piece_num = int(math.ceil(float(file_info["size"]) / file_info["piece_size"]))
if os.path.isfile(file_path): if os.path.isfile(file_path):
if sha512 not in self.piecefields: if sha512 not in self.piecefields:
if open(file_path).read(128) == "\0" * 128: if open(file_path, "rb").read(128) == b"\0" * 128:
piece_data = "0" piece_data = "0"
else: else:
piece_data = "1" piece_data = "1"