Top.Mail.Ru
Ответы

Как правильно отправить картинку post запросом?

Такая проблема. Хочу организовать автоматический постинг для boosty. Столкнулся с проблемой загрузки фотографии на их хостинг, чтобы далее передать загруженные картинки со сгенерированными id и url (ну это от бусти в ответе должно прилетать в ответ на загрузку фото).
При создании поста там можно добавлять фотографии(из директории), которые загружаются сюда:

1
 АШТТП://uploadimg.boosty.to/v1/media_data/image/ 


Мазила показывает вот что:
https://imgur.com/a/gIDtVr2

Мой код:

12345678910111213141516171819202122232425262728293031323334
 import requests 
 
from data.config import API_TOKEN 
 
photo_path = 'img.jpg' 
 
url = 'АШТТП://uploadimg.boosty.to/v1/media_data/image/' 
files = {"file": open(photo_path, "rb")} 
 
headers = { 
   "Host": "uploadimg.boosty.to", 
   "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0", 
   "Accept": "application/json, text/plain, */*", 
   "Accept-Language": "ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3", 
   "Accept-Encoding": "gzip, deflate, br", 
   "Referer": "АШТТП:://boosty.to/кто-то/new-post", 
   "Content-Type": "application/x-www-form-urlencoded", 
   "X-From-Id": "99daac93-6f88-436e-8437-208e7e75e4c0", 
   "X-App": "web", 
   "X-Locale": "ru_RU", 
   "X-Referer": "", 
   "Authorization": API_TOKEN, 
   "Content-Length": "253225", 
   "Origin": "АШТТП://boosty.to", 
   "Connection": "keep-alive", 
   "Sec-Fetch-Dest": "empty", 
   "Sec-Fetch-Mode": "cors", 
   "Sec-Fetch-Site": "same-site" 
} 
 
 
response = requests.post(url=url, files=files, headers=headers) 
print(response.status_code) 
print(response.json()) 

Что я получаю в ответ:

12
 400 
{'error_description': 'Image format is wrong or unsupported', 'error': 'wrong_image_format'} 

Пишет что-то про формат, но с ним вроде всё норм, однако меня смущает:

1
 "Content-Type": "application/x-www-form-urlencoded",  

Возможно тут что-то другое должно быть? По типу multipart/form-data, но даже сайт отправляет другой формат. Может кто шарит, подскажите пожалуйста

По дате
По Рейтингу
Аватар пользователя
Искусственный Интеллект

В multipart/form-data слать нужно, application/x-www-form-urlencoded не поддерживает загрузку файлов.
Если там на стороне сервера всё же принимаются в формате application/x-www-form-urlencoded, то тут нужно смотреть, как именно кодируются, и в requests уже не через параметр files скармливать, а руками формировать параметр в теле запроса