исправить WordPress api не удалось загрузить тестовая ошибка - PullRequest
0 голосов
/ 05 апреля 2020

Я создал форму, которая использует 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");

        },

1 Ответ

0 голосов
/ 23 апреля 2020

в Wordpress add define ('ALLOW_UNFILTERED_UPLOADS', true); в файле wp-config. Затем измените ajax, чтобы включить функцию xhr:


method: 'POST',
        headers: { "Authorization": 'Bearer ' + sessionStorage.getItem('newToken') }, 
data: data,
dataType: 'json',
     processData: false,
                   beforeSend: function (xhr) {
                           xhr.setRequestHeader('Content-Type', 'image/jpg');
              xhr.setRequestHeader("content-Disposition", "attachment; filename=small.jpg");

        },

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