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

Python如何将PDF转换为二进制Blob格式以适配仅接收Blob文件的API

问题解决方法

核心逻辑说明

Python没有原生的Blob类型,对接要求Blob格式文件上传的API时,使用requests等HTTP请求库时,BytesIO对象或者直接打开的文件对象即可实现和JSBlob完全等价的效果。你之前的代码问题在于没有指定PDF对应的MIME类型,也没有正确将文件对象传入请求的文件字段。

正确实现代码

方案1:直接读取本地PDF上传(最常用)

import requests

with open("目标PDF文件路径.pdf", "rb") as pdf_file:
    # 构造文件上传参数,和JS里的Blob参数一一对应
    upload_files = {
        # inputFile为API要求的接收字段,和你JS代码里的dtoIn.inputFile对应
        "inputFile": (
            "传给API的文件名.pdf", # 可自定义,建议保留.pdf后缀
            pdf_file,
            "application/pdf" # 对应JS Blob构造的type参数,PDF固定用这个值
        )
    }
    # 如有其他普通表单参数可放到data里
    other_params = {"额外参数": "参数值"}
    response = requests.post("你的API接口地址", files=upload_files, data=other_params)

方案2:先封装为BytesIO再上传

如果你的PDF内容不是来自本地文件,需要先处理成二进制再上传,可以用这个方案:

import requests
from io import BytesIO

# 先读取本地PDF内容,也可以是其他来源生成的PDF二进制数据
with open("目标PDF文件路径.pdf", "rb") as pdf_file:
    pdf_binary = pdf_file.read()

# 封装为BytesIO对象,等价于JS里的Blob
pdf_blob = BytesIO(pdf_binary)

# 上传逻辑和方案1一致
upload_files = {
    "inputFile": ("传给API的文件名.pdf", pdf_blob, "application/pdf")
}
response = requests.post("你的API接口地址", files=upload_files)

注意事项

  • 字段名必须和API要求的接收字段一致,如果你当前对接的API字段不是inputFile,需要对应修改
  • MIME类型不要写错,传PDF必须用application/pdf,不要复用你参考的JS示例里的application/json
  • 部分API会校验文件名后缀,建议自定义文件名时保留.pdf后缀,避免被拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:45:03