Я создал форму, которая использует ajax для публикации данных на носителе WordPress с помощью Wordpress API. Я получаю сообщение об ошибке указанный файл не удалось загрузить тест. Я использую плагин аутентификации JWT для аутентификации.
ДОБАВИТЬ ФОРМУ МЕДИА
<form name="addmediaform" id="addmediaform" style="display: none" method="POST" enctype="multipart/form-data">
<div class="main-column">
<div class="media-quick-add">
<h3>Add media</h3>
<input type="text" id="title" name="title" placeholder="Title">
<input type="file" name="files" value=”” aria-required=”true” required multiple=”false” />
<button id="quick-add-button" class="success button">Create Post</button>
СОЗДАТЬ ФУНКЦИЮ МЕДИА
var title = document.querySelector('#title').value;
$("#quick-add-button").click(function (event) {
//stop submit the form, we will post it manually.
event.preventDefault();
// Get form
var form = $('#addmediaform')[0];
// Create an FormData object
var data = new FormData(form);
// disabled the submit button
$("#quick-add-button").prop("disabled", true);
$.ajax({
url: 'http://example.com/wordpress/wp-json/wp/v2/media',
method: 'POST',
enctype: 'multipart/form-data',
headers: { "Authorization": 'Bearer ' + sessionStorage.getItem('newToken') },
data: data,
processData: false,
contentType: false,
cache: false,
timeout: 600000,
success: function(data) {
$("#result").text(data);
console.log("SUCCESS : ", data);
$("#quick-add-button").prop("disabled", false);
$LOGIN.fadeToggle();
$LOGOUT.toggle();
$POST.fadeToggle()
},
error: function (e) {
$("#result").text(e.responseJSON.message);
console.log("ERROR : ", e);
$("#quick-add-button").prop("disabled", false);
}
});
});
Я не смог найти php INI-файл в размещенном каталоге, поэтому создал пустой файл и включил file_uploads =, но это не сработало. Я посмотрел в файле wp-admin / includes / file. php, но не знаю, нужно ли что-то менять. Я проверил, и в WordPress нет другого файла с таким же именем.
ОБНОВЛЕНО
Следуя совету пользователя, я закомментировал тип и тип контента en c и добавил последнюю строку xhr для mp4, и это сработало. Я исправил это с двумя последними записями для jpg и получил ошибку безопасности. Я пытаюсь добавить данные токена в xhr, это правильно и как его нужно отформатировать, так как я думаю, что где-то отсутствует скобка
method: 'POST',
// enctype: 'multipart/form-data',
headers: { "Authorization": 'Bearer ' + sessionStorage.getItem('newToken') },
data: data,
dataType: 'json',
processData: false,
// contentType: false,
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization": 'Bearer ' + sessionStorage.getItem('newToken'));
xhr.setRequestHeader('Content-Type', 'image/jpeg');
xhr.setRequestHeader("content-Disposition", "attachment; filename=small.jpeg");
},