zipfile.BadZipFile:中心目录的错误偏移量



我设计了一个网页,允许用户上传一个zip文件。我想做的是将这个zip文件作为一个大的二进制对象直接存储到我的sqlite数据库中,然后能够使用zipfile包将这个二进制对象作为zipfile读取。不幸的是,这不起作用,因为试图将io.BytesIO中的文件作为二进制字符串传递到zipfile.ZipFile会给出标题中详细说明的错误。

对于我的MWE,为了更好地演示我的问题,我排除了数据库。

views = Blueprint('views', __name__)
@views.route("/upload", methods=["GET", "SET"])
def upload():
# Assume that file in request is a zip file (checked already)
f = request.files['file']
zip_content = f.read()
# Store in database
# ...
# at some point retrieve the file from database
archive = zipfile.ZipFile(io.BytesIO(zip_content))
return ""

我已经搜索了几天如何解决这个问题没有成功。我甚至在应用.read()之后打印出zip_contentio.BytesIO(zip_content)的内容,它们是完全相同的字符串。

我做错了什么?

解决。使用f.read()只获取zip文件的名称。我需要使用f.getvalue()来获取完整的文件内容。

最新更新