You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Mackoon响应中返回文件内容?将PDF转为Base64存入JSON

实现方案:在Mackoon中返回含Base64格式PDF的JSON响应

步骤1:读取本地PDF文件

用二进制模式读取文件,确保获取原始字节内容,避免编码破坏PDF结构:

with open("your_target.pdf", "rb") as pdf_file:
    pdf_raw_bytes = pdf_file.read()

步骤2:转换为Base64字符串

使用Python内置base64模块完成编码,最后转成UTF-8字符串(JSON仅支持字符串类型):

import base64

pdf_base64_str = base64.b64encode(pdf_raw_bytes).decode("utf-8")

步骤3:封装到JSON响应

根据Mackoon的响应机制,构造包含data字段的JSON返回。假设Mackoon的响应写法类似常见Web框架:

from mackoon import make_response  # 适配Mackoon的响应生成方式

def generate_pdf_json_response():
    # 读取并转换PDF
    with open("your_target.pdf", "rb") as pdf_file:
        pdf_raw_bytes = pdf_file.read()
    pdf_base64_str = base64.b64encode(pdf_raw_bytes).decode("utf-8")
    
    # 返回带data字段的JSON
    return make_response({"data": pdf_base64_str}, 200)

替代方案:直接返回PDF二进制流(更高效)

如果业务允许不把内容放在JSON的data字段,直接返回PDF流能避免Base64带来的30%体积膨胀,更适合大文件:

def generate_pdf_stream_response():
    with open("your_target.pdf", "rb") as pdf_file:
        pdf_raw_bytes = pdf_file.read()
    return make_response(
        pdf_raw_bytes,
        200,
        {
            "Content-Type": "application/pdf",
            "Content-Disposition": "inline; filename=result.pdf"
        }
    )

关键注意点

  • 必须用二进制模式(rb)读取PDF,否则会损坏文件内容。
  • 若PDF体积超过10MB,优先选择直接返回二进制流,避免Base64导致响应过大。
  • 文件路径建议使用项目根目录的绝对路径,防止因运行环境差异出现路径错误。

内容的提问来源于stack exchange,提问作者SkorpEN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 12:30:03