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