首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python的Requests库将标签添加到PDF,这破坏了API

Python的Requests库将标签添加到PDF,这破坏了API
EN

Stack Overflow用户
提问于 2017-05-01 21:18:09
回答 2查看 45关注 0票数 1

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

代码语言:javascript
复制
--ca9a0d04edf64b3395e62c72c7c143a5
Content-Disposition: form-data; name="LoI.pdf"; filename="LoI.pdf"

%%Original PDF goes here%%

--ca9a0d04edf64b3395e62c72c7c143a5--

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

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

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2017-05-01 21:50:38

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

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

至少,它应该以不同的方式被破坏。

票数 0
EN

Stack Overflow用户

发布于 2017-05-01 22:37:56

在正确的方向上,我找到了一个基于Python requests - POST data from a file的工作解决方案

最后,我这样做了:

代码语言:javascript
复制
 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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43719734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档