python - 在Web服务中将pdf作为字节发送

时间:2016-02-11 12:30:23

标签: javascript python angularjs pdf flask

我用来构建一个使用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);
        });

1 个答案:

答案 0 :(得分:1)

您可以使用send_filesend_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类型和缓存等内容。默认值应该很好。