我有一个Vue.js
应用尝试从Flask
服务器请求zip文件。但是,当我从服务器收到有效负载并尝试打开它时,我正在使用的包(JSZip
)告诉我zip文件已损坏。如果我通过浏览器请求URL,则zip文件下载没有问题。我认为它可能与zip文件的生成方式有关,但我不确定。为什么文件在客户端会被破坏?
客户端Javascript代码:
const jszip = require('./jszip.min.js');
...more code...
this.filesystem.REST.get('http://localhost:3000').then(function(result){
var zip = new jszip();
zip.loadAsync(result.data).then(function(contents) {
// Execution does not reach this point
// Fails with corruption error before the then() call
})
})
服务器Python代码:
@app.route('/')
def home():
playerFp = os.path.join(seriesMap[seriesid], playerid)
fileList = os.listdir(playerFp)
bytesIo = io.BytesIO()
zf = zipfile.ZipFile(bytesIo, mode="w")
for file in fileList:
if '.jpg' in file or '.xml' in file:
absFp =os.path.join(playerFp, file)
if '.xml' in file:
stats = getJsonFormat(absFp)
jsonfile = file.replace('.xml', '.json')
zf.writestr(jsonfile, stats)
else:
zf.write(absFp, os.path.relpath(absFp, playerFp))
zf.close()
bytesIo.seek(0)
return send_file(bytesIo, attachment_filename=playerid+'.zip', as_attachment=False)
这是我在控制台中遇到的错误:
答案 0 :(得分:0)
客户端上的脚本有问题。您需要使用以下命令定义zip文件:
var zip = new JSZip()
而不是:
var zip = new jszip()