Python的请求库将标记添加到PDF中,这破坏了API

2024-03-28 21:28:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python的Requests库将一个PDF文件发布到一个文档库中,上传的PDF文件随后将用于签名过程。但是,当使用Python(而不是CURL)上传PDF时,签名环境不起作用。通过比较不同的文件,我发现请求会在PDF中添加一些数据:

--ca9a0d04edf64b3395e62c72c7c143a5
Content-Disposition: form-data; name="LoI.pdf"; filename="LoI.pdf"

%%Original PDF goes here%%

--ca9a0d04edf64b3395e62c72c7c143a5--

不同的PDF阅读器完全可以接受这些数据,但签名API却不能接受。有没有办法阻止请求将此数据添加到PDF中?我使用了以下代码:

myfile = request.FILES['myfile']
url = %%documentstoreURL%%
resp = requests.request('post', url, files={myfile.name:myfile}, headers={'Content-Type':'application/pdf'}, auth=(%%auth details%%))

谢谢


Tags: 文件数据name文档authurlpdf过程
2条回答

在正确的指导下,我找到了一个基于Python requests - POST data from a file的有效解决方案

最后我做了如下:

 myfile = request.FILES['myfile']
 payload = request.FILES['myfile'].read()
 headers = {'content-type': 'application/pdf'}
 url = "%%DocumentServiceURL"
 r = requests.post(url, auth=(%%auth_details%%), data=payload, verify=False, headers=headers)

使用curl将文件作为二进制数据发送,但在请求中附加它

我仔细阅读了源代码,我相信resp = requests.request('post', url, data={myfile.name:myfile}, headers={'Content-Type':'application/pdf'}, auth=(%%auth details%%))data而不是files)将避免多部分编码

至少,它应该是不同的打破

相关问题 更多 >