python - 通过 POST 请求发送二进制图像

标签 python python-requests mechanize

我正在尝试发送一个将 img 上传到 https://pasteboard.co/ 的帖子请求,但我总是收到 500 响应,告诉我缺少文件。

文件确实存在,路径是正确的,不知道问题出在哪里。

import mechanicalsoup

browser = mechanicalsoup.StatefulBrowser()
browser.set_user_agent(
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36')

response = browser.open('https://pasteboard.co/')

payload = {"file": open('C:/Users/Oli/Google Drive/IMG_20190616_153432.jpg', 'rb').read()}
response = browser.post('https://pasteboard.co/upload', payload)

它不是以下的副本: Upload Image using POST form data in Python-requests

如果我尝试像那里一样的代码:

import requests
session = requests.Session()
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'}
session.headers = headers


session.get('https://pasteboard.co/')

image_file_descriptor = open('C:/Users/Oli/Google Drive/IMG_20190616_153432.jpg', 'rb').read()
payload = {"file": image_file_descriptor}

a = requests.post('https://pasteboard.co/upload', files=payload, headers=headers)

我收到 502 Bad Gateway 错误。

最佳答案

我使用 requests 模块制作的 试试这个代码:

import requests
import json

header = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}
img_file = open(r'C:/Users/Oli/Google Drive/IMG_20190616_153432.jpg', 'rb')
header['Content-Type'] = 'multipart/form-data'
files = {'file': ('Image.jpg', img_file, 'image/jpeg', {'Expires': '10'}) }
res = requests.post('https://pasteboard.co/upload', files=files)
uploaded_image_name = json.loads(res.content.decode('utf-8'))['fileName']
print(f'New Link: https://pasteboard.co/{uploaded_image_name}')

如果您上传 png 文件,只需更改以下内容:

1.首先,

files = {'file': ('Image.png', img_file, 'image/png', {'Expires': '10'}) }

2。图片路径。

检查这是否适合您。

关于python - 通过 POST 请求发送二进制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57037841/

相关文章:

Python Mechanize 设置 cookie

ruby-on-rails - 为什么 Bundler 找不到这个 gem?

python - 处理大数据集进行图像分类

python通过串口监控

python - Mechanize 将登录表单从 http 提交到 https

python - 我正在尝试使用 python 请求创建用于网络抓取的 POST 数据

python - 无法使用 requests.get(url) 运行 BeautifulSoup

python - 如何在 Django REST Framework 中使用默认的日期时间序列化?

java - 模运算 : Division over factorials % Prime

python - request.get() 卡住了