【问题标题】:Download JavaScript Generated Binary from Tornado从 Tornado 下载 JavaScript 生成的二进制文件
【发布时间】:2012-03-05 06:58:54
【问题描述】:

我正在使用PDFKit 在浏览器中生成 PDF。然后我将 PDF 发布到龙卷风网络服务器,我想将其作为下载返回到浏览器。这是请求处理程序:

class PDF(RequestHandler):
    def post(self):
        logger.info("Received PDF.")
        self.set_header('Content-Type', 'application/pdf')
        self.set_header('Content-Disposition', 'attachment; filename="export.pdf"')
        self.write(self.request.body)
        logger.info("Returning PDF.")

但是,下载的 PDF 似乎是 URL 编码的(斜杠显示为 %2F 等)。我在这里做错了什么?

【问题讨论】:

  • 您确定不是上传的 PDF 有这些问题吗?也许这是您对上传表单进行编码的方式的问题?
  • 你是对的。所以我实际上是先对上传的 PDF 进行 base64 编码。我现在在服务器端解码,所以文件看起来更好,但它仍然没有被识别为有效的 PDF。
  • 您是否尝试将其保存到服务器上的本地文件而不从龙卷风中返回,只是为了排除龙卷风与它有关?

标签: pdf tornado pdfkit


【解决方案1】:

问题实际上是 base64 解码和 URL 反转义的组合。现在可以使用以下方法:

class PDF(RequestHandler):
    def post(self):
        self.set_header('Content-Type', 'application/pdf')
        self.set_header('Content-Disposition', 'attachment; filename="export.pdf"')
        self.write(b64decode(escape.url_unescape(self.request.body.split("=")[1])))

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 2014-11-11
    • 2018-02-19
    • 1970-01-01
    • 2013-05-28
    • 2016-07-24
    • 2012-11-23
    相关资源
    最近更新 更多