ионная загрузка изображения в медиа-библиотеку WordPress через wp rest api

Я использую плагин ионной камеры, а также эту ссылку: https://ionicframework.com/docs/v3/native/camera/

мой сервер - wordpress, и мое ионное приложение также может загружать мои файлы изображений. я могу просмотреть из галереи или взять новое изображение.

После получения нового изображения с камеры пользователь может нажать кнопку загрузки, после чего также появится файл base64. тогда он может загрузить, но WordPress не может определить его как jpeg или png.

и когда я скачиваю, он не может открываться краской или чем-то подобным

это мой код:

let token = JSON.parse(localStorage.getItem('wpIonicTokenRaahee')).token;
console.log(token);
console.log(this.api_url_post_media);

let headers = new HttpHeaders({
  'cache-control': 'no-cache',
  'Content-Type': 'application/x-www-form-urlencoded',
  'Authorization': `Bearer ${token}`,
  'content-disposition': 'attachment; filename=' + filename + '.jpeg',

});

return this.http.post(this.api_url_post_media, data, { headers: headers });

Я тестировал любой тип контента, например image / png image / jpeg или т. д.

пожалуйста, помогите мне .. я могу загрузить изображение через почтальона ... но я не знаю, как я могу преобразовать и загрузить свой файл base64 в виде двоичного файла на мой сервер


person saber tabatabaee yazdi    schedule 13.09.2019    source источник


Ответы (1)


после попытки устранить ошибку я могу найти решение

нам нужно преобразовать файл base64 в двоичный файл blob, прежде чем размещать его в wordpress.

https://forum.ionicframework.com/t/how-to-convert-base64-into-an-image/118040/4

getBlob (b64Data) {
    contentType = '';
    sliceSize = 512;

    b64Data = b64Data.replace(/data\:image\/(jpeg|jpg|png)\;base64\,/gi, '');

    let byteCharacters = atob(b64Data);
    let byteArrays = [];

    for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
      let slice = byteCharacters.slice(offset, offset + sliceSize);

      let byteNumbers = new Array(slice.length);
      for (let i = 0; i < slice.length; i++) {
          byteNumbers[i] = slice.charCodeAt(i);
      }

      let byteArray = new Uint8Array(byteNumbers);
      byteArrays.push(byteArray);
    }

    let blob = new Blob(byteArrays, {type: contentType});
    return blob;
}

Я могу реализовать это с помощью ionic3

1- использовать камеру v4 с ionic3

2- использовать двоичный файл для загрузки

3- уменьшить качество камеры с помощью опции

4- используйте плагин jwt для аутентификации

5- используйте метод http.post

У меня не было опыта с передачей файлов, но для использования этого плагина используйте версию 4 с ionic3

6.Если вы хотите, вы можете использовать плагин pods для создания новых объектов и добавления их в свой wordpress, вы можете выполнить поиск на YouTube и найти 9 видео от Baljeet Singh

person saber tabatabaee yazdi    schedule 13.09.2019