我在另一页(同一文件夹)中使用下面的代码。使用文件输入字段将图像上传到Wordpress媒体库中,并从我的PC中选择图像,效果很好。
现在,我试图在此页面中使用相同的代码,但要上传通过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
它没有返回任何错误,但没有上传图像
编辑: 值得一提的是,要使上述工作(本地文件上传)有效,我必须在我的function.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();
}