如何解决POST请求角度7
我有一个Flask API,该API在给定一组JSON输入的情况下返回生成的.pptx文件。使用Postman,我能够发送JSON数据并接收PowerPoint。但是,当我尝试使用Angular 7发送POST请求时,出现内容长度不匹配错误。
我的Angular服务:
private header = new HttpHeaders({ 'content-type': 'application/json'});
getData(data): Observable<Blob>{
return this.http.post(this.FLASKURL,JSON.stringify(data),{responseType: "blob",headers: this.header })
}
我的Angular组件:
generatePowerpoint() {
this.flaskapi.getData(this.tiles)
.subscribe(blob => {
console.log(blob);
const a = document.createElement('a')
const objectUrl = URL.createObjectURL(blob)
a.href = objectUrl
a.download = 'test.pptx';
a.click();
URL.revokeObjectURL(objectUrl);
})
}
我知道问题不在烧瓶那边,因为我可以用Postman下载它。我目前的工作原理是我错误地定义了标题。
我的错误
net::ERR_CONTENT_LENGTH_MISMATCH 200 (OK)
任何能帮助我解决此问题的帮助将不胜感激。谢谢!
编辑: 经过大量的故障排除后,我得以解决问题。原来我的Flask API是问题所在。使用Python-pptx,我生成了一个PowerPoint,并使用BytesIO()保存了它。但是,保存文件后,我忘了回溯到文件的开头,然后再将其作为API的返回内容发送出去。下面是一些有关如何解决此问题的示例代码。
def route():
presentation = Presentation("test.pptx")
# modify presentation with python-pptx here
testfile = BytesIO()
presentation.save(testfile)
testfile.seek(0)
return send_file(testfile,attachment_filename="testing.pptx",mimetype='applicationvnd.openxmlformats-officedocument.presentationml.presentation',as_attachment=True)
只需添加testfile.seek(0)
,我就能解决我的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。