phtimofeeff
@phtimofeeff
МИРЭА Прикладная математика

Почему не загружается фото на Wordpress через REST API?

Есть код:
import requests
from dotenv import load_dotenv
import os

site_url = os.getenv("SITE_URL")
username = os.getenv("USERNAME")
password = os.getenv("APP_PASSWORD")
upload_url = f'{site_url}/wp-json/wp/v2/media'
image_path = os.getenv("IMG")

with open(image_path, 'rb') as file:
    image_data = file.read()
auth = (username, password)
headers = {
    'Content-Type': 'image/jpeg',
}
response = requests.post(upload_url, auth=auth, headers=headers, data=image_data)
if response.status_code == 201:
    print('Image uploaded successfully!')
else:
    print('Failed to upload image. Status code:', response.status_code)


Авторизация проходит на ОКей...
А вот при попытке загрузить фото получаю ответ:
401, Извините, вам не разрешено создавать записи от лица этого пользователя.

Пробовал дать пользователю админские права, меня пользователя на главного админа.
Отключал все плагины, проверил весь .htaccess, уже даже в config.php явно указал что REST API - true
Всё говорит за то что оно должно работать, но оно не работает, хоть ты тресни.

Опять видимо чего-то простого не замечаю.
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
phtimofeeff
@phtimofeeff Автор вопроса
МИРЭА Прикладная математика
Сам в итоге разобрался. Как обычно оказалось все просто.
import requests
from dotenv import load_dotenv
import os

site_url = os.getenv("SITE_URL")
username = os.getenv("USERNAME")
password = os.getenv("APP_PASSWORD")
upload_url = f'{site_url}/wp-json/wp/v2/media'
image_path = os.getenv("IMG")

with open(image_path, 'rb') as file:
    image_data = file.read()
credentials = user + ':' + password
token = base64.b64encode(credentials.encode())
headers = {
    'Authorization': 'Basic ' + token.decode('utf-8')
}
response = requests.post(upload_url, auth=auth, headers=headers, files=image_data)
if response.status_code == 201:
    print('Image uploaded successfully!')
else:
    print('Failed to upload image. Status code:', response.status_code)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы