如何用Python的Requests上传从URL下载的PDF至API?
用Python requests实现二进制PDF上传(从指定URL获取文件)
你不需要用PyPDF处理,直接通过requests获取PDF的二进制内容,再以binary形式上传到目标API即可,步骤如下:
实现步骤
- 从指定URL下载PDF二进制数据:用requests发送GET请求,直接获取文件的二进制内容(无需保存到本地)。
- 以binary方式上传到目标API:把下载到的二进制数据作为请求体,设置
Content-Type: application/pdf后发送POST请求。
完整代码示例
import requests # 1. 从指定URL下载PDF二进制内容 pdf_source_url = "https://example.com/source.pdf" # 替换为你的PDF源URL download_response = requests.get(pdf_source_url) download_response.raise_for_status() # 检查下载是否成功,失败则抛出异常 pdf_binary_data = download_response.content # 2. 上传到目标API target_api_url = "https://your-api-domain.com/upload-endpoint" # 替换为你的API地址 upload_headers = { "Content-Type": "application/pdf", # 如果API需要认证,可在此添加对应头信息,比如: # "Authorization": "Bearer your_access_token" } upload_response = requests.post( target_api_url, data=pdf_binary_data, headers=upload_headers ) # 验证上传结果 upload_response.raise_for_status() print("上传成功,API响应:", upload_response.text)
关键说明
- 下载PDF时,
response.content直接返回字节流,这就是我们需要的二进制数据,无需解析或落地存储。 - 上传时使用
data参数传递二进制数据,完全对应Postman里的「binary」上传模式,配合Content-Type头确保API能正确识别文件类型。 - 如果源PDF URL需要认证(比如带Cookie、Token),可以在
requests.get中添加对应的headers参数补充认证信息。 raise_for_status()用于主动抛出请求异常,方便快速定位下载或上传环节的问题。
内容的提问来源于stack exchange,提问作者Robin
相关产品推荐
相关产品推荐

