在没有表单的python烧瓶中上传zip文件

时间:2015-11-30 19:08:55

标签: python-2.7 flask zipfile

我尝试使用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异常并且它说:"文件头的错误幻数"

1 个答案:

答案 0 :(得分:0)

问题似乎是您正在使用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()