微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

POST请求角度7

如何解决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 举报,一经查实,本站将立刻删除。