Python请求图片上传HTTP POST

标签 python python-requests

我在处理 POST 请求时遇到了一些问题,这让我发疯。我正在尝试通过复制原始请求使用 python 请求使用 POST 上传图像

首先,这是我用 Firebug 可以看到的原始请求,请求 header 是:

Accept application/json, text/javascript, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.7,it;q=0.3
Cache-Control no-cache
Connection keep-alive
Content-Length 26051
Content-Type multipart/form-data; boundary=--------------------------- 37693668010849786771875799013
Cookie some cookie
DNT 1
Host my.host.com
Pragma no-cache
Referer https://my.host.com/postad/1dc185ff9e814068be23ed674956a190
User-Agent Mozilla/5.0 (X11; Linux i686; rv:38.0) Gecko/20100101 Firefox/38.0
X-Requested-With XMLHttpRequest

和 POST 请求的主体:

-----------------------------5697279162042627623887894974
Content-Disposition: form-data; name="image"; filename="clip.jpg"
Content-Type: image/jpeg

ÿØÿà�JFIF������ÿÛ�C�     .....
-----------------------------5697279162042627623887894974
Content-Disposition: form-data; name="upload"


-----------------------------5697279162042627623887894974--

这是我用来上传图片的代码:

files = {'image': ('clip.jpg', open('clip.jpg', 'rb'))}
post_image_url = "https://my.host.com/postad/563a533d9105448dbaf853f7ca0265fa/images"
r = session.post(post_image_url, files=files)

但我总是收到 404 错误,假设请求不正确。认为我必须调整请求以反射(reflect)使用 Firebug 检查的原始请求。我认为请求不完整,我可能遗漏了请求的最后一部分:

-----------------------------5697279162042627623887894974
Content-Disposition: form-data; name="upload"


-----------------------------5697279162042627623887894974--

我无法以任何方式复制。

最佳答案

您可以使用 data 参数添加额外的字段:

data = {'upload': ''}

r = session.post(post_image_url, files=files, data=data)

这只是提交按钮的值,在您的情况下是一个空字符串。

关于Python请求图片上传HTTP POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30480065/

相关文章:

python - 在 Pygame 中制作半透明暂停背景屏幕

python - 为什么 PyQt 在没有信息的情况下崩溃? (退出代码 0xC0000409)

python - 第一个 HTTPS 请求比其他请求花费更多时间

在 macOS Sierra 上使用 OpenSSL 的 python 请求

python请求.status_code未返回正确的值

python - Windows XP : "error: Unable to find vcvarsall.bat" 中的 Cython 问题

python - 获取我的 Kafka 队列中的最新消息时间戳

python - 在python中比较json的元素

python - 尝试使用 kairos 上传文件时出错

python-3.x - Python3 get.requests url 缺少参数