我用来构建一个使用application-json
mime类型响应的Web服务。
但现在我想将PDF作为字节响应,所以我假设我必须改变mime类型。
我会使用路由,但我也可以使用烧瓶。
以下代码显示了结构,但我不知道如何将pdf转换为字节,然后发送它。
@app.route('/pdf/myfile')
def pdf():
data = open("myfile.pdf", "rb").read()
# make a reponse with those bytes
return response
在客户端(angular.js
)我将拥有:
$http.get('/pdf/myfile', null, { responseType: 'arraybuffer' })
.success(function (data) {
var file = new Blob([data], { type: 'application/pdf' });
var fileURL = URL.createObjectURL(file);
window.open(fileURL);
});
答案 0 :(得分:1)
您可以使用send_file
或send_from_directory
:
from flask import send_from_directory
@app.route('/pdf/myfile')
def pdf():
return send_from_directory('/dir/of/pdf', 'my.pdf')
默认情况下,这将以内联方式发送文件,浏览器可能会呈现PDF本身。如果您设置as_attachment=True
,该文件将显示为附件,并且浏览器会抛出一个"另存为"对话框。
send_file
让您可以更好地控制mime类型和缓存等内容。默认值应该很好。