#json #wordpress #wordpress-rest-api
#json #wordpress #wordpress-rest-api
Вопрос:
У меня странная проблема, которая поражает мою голову. Вероятно, я упускаю из виду что-то незначительное, но, хоть убейте, я не могу этого понять.
Вот предпосылка:
- Я делаю запрос POST к пользовательской зарегистрированной конечной точке api в среде wp, на которую я отправляю данные json из формы. Тип содержимого задан правильно, и если я выполняю отладку, сбрасывая $request-> get_body(), он показывает правильные данные, которые я передал.
- тем не менее, я также отправляю данные изображения в кодировке base64, полученные из программы чтения файлов. Если я добавлю другой элемент к отправляемым данным и строку base64 в качестве значения для него, дамп станет НУЛЕВЫМ. Удаление строки base64 из json приводит к тому, что дамп снова становится нормальным.
Я также попытался увеличить максимальный размер загрузки и размер публикации, однако, поскольку файл, который я использую в качестве теста, составляет 20 КБ, я не думаю, что это проблема.
Я надеюсь, что кто-нибудь может помочь мне увидеть ошибку моих путей.
Вот фрагмент кода. Обратите внимание, что URL-адрес здесь не настоящий, но реальный в моей среде. Кроме того, из-за ограничения символов я не смог опубликовать все изображение base64 во фрагменте, но будьте уверены, что оно правильное. Я даже пытался использовать прозрачное изображение размером 1 на 1 пиксель, и у меня была та же проблема.
var image = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/4QDeRXhpZgAASUkqAAgAAAAGABIBAwABAAAAAQAAABoBBQABAAAAVgAAABsBBQABAAAAXgAAACgBAwABAAAAAgAAABMCAwABAAAAAQAAAGmHBAABAAAAZgAAAAAAAAA4YwAA6AMAADhjAADoAwAABwAAkAcABAAAADAyMTABkQcABAAAAAECAwCGkgcAFgAAAMAAAAAAoAcABAAAADAxMDABoAMAAQAAAP//AAACoAQAAQAAABgCAAADoAQAAQAAAGIBAAAAAAAA...";
var data = {
'test': 'hello world',
'image': image
};
var myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify(data);
var requestOptions = {
method: 'POST',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("/wp-json/test/v1/testapi", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
Комментарии:
1. Другое примечание:
json_last_error()
возвращает0
Ответ №1:
Я решил проблему. Это не было связано с json / javascript / api. Это была простая проблема владения папкой tmp. Поскольку php, управляющий запросом, не выдавал ошибок, я никогда не замечал УВЕДОМЛЕНИЯ PHP о проверке разрешений во временной папке, поскольку php не смог загрузить туда временный файл. И действительно, хотя разрешения были в порядке, групповое владение не было.
Извините, что потратил время всех. Спасибо.