Ошибка при попытке отправить изображение в wordpress api - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь использовать API Wordpress для отправки изображения в Wordpress (я хочу затем использовать его в сообщении, также созданном с помощью API). Это мой код:

data = open(os.path.join(settings.STATIC_ROOT, "test.png"), "rb").read()
    filename="test"
    extension = "png"
    headers = {
        'authorization': 'Basic ' + token.decode('utf-8'),
        'cache-control': 'no-cache',
        'content-disposition': 'attachment; filename=%s' % filename,
        'content-type': 'image/%s' % extension
    }
    r = requests.post(url + '/media', headers=headers, data=data)

Я получаю в ответ следующую ошибку:

{"code":"rest_upload_sideload_error","message":"D\u00e9sol\u00e9, ce type de fichier n\u2019est pas autoris\u00e9 pour des raisons de s\u00e9curit\u00e9.","data":{"status":500}}

Для тех, кто совсем не понимает французский, там написано, что из соображений безопасности это Тип файлов недопустим. Я не понимаю, почему png не является особым форматом, а мое изображение - это случайное простое изображение, снятое на inte rnet для моих тестов. Я также попробовал файл ico, результат тот же. Я знаю, что учетная часть работает, поскольку я использовал ее для тестирования API для публикации сообщения, которое сработало.

Спасибо за помощь

1 Ответ

0 голосов
/ 29 мая 2020

Я только что понял!

Мне нужно было изменить две вещи в моем исходном коде, опубликованном выше. Во-первых, как предложила SD, мне пришлось включить расширение в свой файловый каталог, а во-вторых, отправить файл в данных, а не в файлах. Исправленный рабочий код:

token = base64.b64encode(creds.encode())
    headers = {
        'Authorization': 'Basic ' + token.decode('utf-8'),
        'Content-disposition': 'attachment; filename=test.png',
        'Content-type': 'image/png'
    }
    data = open(os.path.join(settings.STATIC_ROOT, "test.png"), "rb").read();
    r = requests.post(url + '/media', headers=headers, data=data)

Надеюсь, это поможет другим, я действительно изо всех сил пытался найти последнюю часть проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...