AJAX загрузить блоб как изображение на Wordpress - PullRequest
0 голосов
/ 05 ноября 2019

Я использую код ниже на другой странице (в той же папке). Хорошо работает загрузка изображения в медиатеку Wordpress с использованием поля ввода файла, выбор изображения на моем ПК.

Теперь я пытаюсь использовать тот же код на этой странице, но для загрузки созданного изображенияиз URL -> base64 -> blob

код:

$(".mySubmit").click(function(event){
      event.preventDefault();

      var url = "url/action";
      var image = imgLink; //correct src image url
      var base64ImageContent = getBase64Image(document.getElementById("thumbImg"));
      var blob = base64toBlob(base64ImageContent, 'image/png');
      console.log(blob);
      var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
      var formData = new FormData();
      formData.append('updoc', blob);
      // formData.append('updoc', $('#user-file')[0].files[0]);
      formData.append('action', "questiondatahtml");
      $.ajax({
        url: ajaxurl,
        type: "POST",
        data:formData,cache: false,
        processData: false, // Don't process the files
        contentType: false, // Set content type to false as jQuery will tell the server its a query string request
        success:function(data) {

          alert("IMAGE UPLOADED ON WORDPRESS");
        },
      });
    });

консольный журнал на blob возвращает:

Blob {size: 315485, type: "image/png"}
size: 315485
type: "image/png"
__proto__: Blob
arrayBuffer: ƒ arrayBuffer()
size: (...)
slice: ƒ slice()
stream: ƒ stream()
text: ƒ text()
type: (...)
constructor: ƒ Blob()
Symbol(Symbol.toStringTag): "Blob"
get size: ƒ size()
get type: ƒ type()
__proto__: Object

он не возвращает никаких ошибок, но это не такзагрузка изображения

РЕДАКТИРОВАТЬ : утешил упоминанием, что для того, чтобы вышеуказанная работа работала (с локальной загрузкой файла), мне пришлось добавить код ниже в моей функции.php:

add_action( 'wp_ajax_questiondatahtml', 'questiondatahtml_update' );
add_action( 'wp_ajax_nopriv_questiondatahtml', 'questiondatahtml_update' );
function questiondatahtml_update() {
if ( $_FILES ) {
require_once(ABSPATH . "wp-admin" . '/includes/image.php');
require_once(ABSPATH . "wp-admin" . '/includes/file.php');
require_once(ABSPATH . "wp-admin" . '/includes/media.php');
$file_handler = 'updoc';
$attach_id = media_handle_upload($file_handler,$pid );
}
echo "You are done!!";
wp_die();
}
...