在 python 烧瓶中上传一个没有表格的 zip 文件

Uploading a zip file in python flask without form

我正在尝试使用 python flask 请求将 zip 文件上传到我的服务器,然后使用 zipfile 模块将其解压缩。

这是我的代码:

@app.route('/uoload', methods=['POST'])
def upload ():

    data = request.data
    current_path = os.getcwd()
    filename = "file.zip"
    with open(os.path.join(upload_path, filename), 'w') as file:
        file.write(data)
    try:
        with zipfile.ZipFile(os.path.join(current_path + filename)) as zf:
            zf.extractall(os.path.join(upload_path))
    except BadZipfile as e:
        print e
        return "", 406

但是上传的文件好像损坏了。因为当我尝试解压缩它时,发生 BadzipFile 异常并显示:"Bad magic number for file header" .

问题似乎是您正在使用 open 创建 zip 存档。 当您使用 open 时,python 会创建将数据写入文件并根据您的需要命名。这并不能使它成为一个 zip 存档。这就是它无法从文件中提取数据的原因。

如果要创建 zip 存档,请使用:

import zipfile

zf = zipfile.ZipFile('file.zip', mode='w')
zf.write('add_this_file_to_zip_archive.txt')
zf.close()