Tinymce 使用 file_picker_callback 和图片上传器获取图片 _description
Tinymce get image _description with file_picker_callback and image uploader
TL:DR 我正在尝试使用 javascript 获取 image_description 字段的值以传递我的 post xhr 请求
原题如下
我正在使用 file_picker_callback 类型的图片
https://www.tinymce.com/docs/configure/file-image-upload/#file_picker_callback
我在
中启用了 image_description 输入字段
tinymce.init({
....,
image_description: true,
...
一切都在上传,但我还想传递 image_description 字段以存储在数据库中。但是我抓不到数据
下面是我的两个函数,直接取自tinymce网站
file_picker_callback: function(cb, value, meta) {
var input = document.createElement('input');
input.setAttribute('type', 'file');
input.setAttribute('accept', 'image/*');
input.onchange = function() {
console.log(this.files);
var file = this.files[0];
console.log( meta ); //I thought it might be here in the meta bt it isn't
console.log( $('#mceu_62').val() ); //I tried to get it from its id but it returns undefined i think that field is created after this function is created.
var id = file.name;
var blobCache = tinymce.activeEditor.editorUpload.blobCache;
var blobInfo = blobCache.create(id, file);
blobCache.add(blobInfo);
// call the callback and populate the Title field with the file name
cb(blobInfo.blobUri(), { title: file.name });
};
input.click();
},
images_upload_handler: function (blobInfo, success, failure) {
var xhr, formData;
xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.open('POST', '/articles/postAcceptor');
xhr.onload = function() {
var json;
if (xhr.status != 200) {
failure('HTTP Error: ' + xhr.status);
return;
}
json = JSON.parse(xhr.responseText);
if (!json || typeof json.location != 'string') {
failure('Invalid JSON: ' + xhr.responseText);
return;
}
success(json.location);
};
formData = new FormData();
formData.append('file', blobInfo.blob(), blobInfo.filename());
formData.append('description', /*but i can't get the value*/);
xhr.send(formData);
}
@卡尔·莫里森
试试这个以获得价值:
images_upload_handler: function (blobInfo, success, failure) {
var xhr, formData;
xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.open('POST', '/articles/postAcceptor');
xhr.onload = function() {
var json;
if (xhr.status != 200) {
failure('HTTP Error: ' + xhr.status);
return;
}
json = JSON.parse(xhr.responseText);
if (!json || typeof json.location != 'string') {
failure('Invalid JSON: ' + xhr.responseText);
return;
}
success(json.location);
};
var description = '';
jQuery(tinymce.activeEditor.dom.getRoot()).find('img').not('.loaded-before').each(
function() {
description = $(this).attr("alt");
$(this).addClass('loaded-before');
});
formData = new FormData();
formData.append('file', blobInfo.blob(), blobInfo.filename());
formData.append('description', description); //found now))
xhr.send(formData);
}
以下可能会对您有所帮助
https://www.tinymce.com
<!DOCTYPE html>
<html>
<head>
<script src="https://cloud.tinymce.com/stable/tinymce.min.js"></script>
<script>tinymce.init({ selector:'textarea' });</script>
</head>
<body>
<textarea>Next, get a free TinyMCE Cloud API key!</textarea>
</body>
</html>
TL:DR 我正在尝试使用 javascript 获取 image_description 字段的值以传递我的 post xhr 请求
原题如下
我正在使用 file_picker_callback 类型的图片 https://www.tinymce.com/docs/configure/file-image-upload/#file_picker_callback
我在
中启用了 image_description 输入字段tinymce.init({
....,
image_description: true,
...
一切都在上传,但我还想传递 image_description 字段以存储在数据库中。但是我抓不到数据
下面是我的两个函数,直接取自tinymce网站
file_picker_callback: function(cb, value, meta) {
var input = document.createElement('input');
input.setAttribute('type', 'file');
input.setAttribute('accept', 'image/*');
input.onchange = function() {
console.log(this.files);
var file = this.files[0];
console.log( meta ); //I thought it might be here in the meta bt it isn't
console.log( $('#mceu_62').val() ); //I tried to get it from its id but it returns undefined i think that field is created after this function is created.
var id = file.name;
var blobCache = tinymce.activeEditor.editorUpload.blobCache;
var blobInfo = blobCache.create(id, file);
blobCache.add(blobInfo);
// call the callback and populate the Title field with the file name
cb(blobInfo.blobUri(), { title: file.name });
};
input.click();
},
images_upload_handler: function (blobInfo, success, failure) {
var xhr, formData;
xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.open('POST', '/articles/postAcceptor');
xhr.onload = function() {
var json;
if (xhr.status != 200) {
failure('HTTP Error: ' + xhr.status);
return;
}
json = JSON.parse(xhr.responseText);
if (!json || typeof json.location != 'string') {
failure('Invalid JSON: ' + xhr.responseText);
return;
}
success(json.location);
};
formData = new FormData();
formData.append('file', blobInfo.blob(), blobInfo.filename());
formData.append('description', /*but i can't get the value*/);
xhr.send(formData);
}
@卡尔·莫里森
试试这个以获得价值:
images_upload_handler: function (blobInfo, success, failure) {
var xhr, formData;
xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.open('POST', '/articles/postAcceptor');
xhr.onload = function() {
var json;
if (xhr.status != 200) {
failure('HTTP Error: ' + xhr.status);
return;
}
json = JSON.parse(xhr.responseText);
if (!json || typeof json.location != 'string') {
failure('Invalid JSON: ' + xhr.responseText);
return;
}
success(json.location);
};
var description = '';
jQuery(tinymce.activeEditor.dom.getRoot()).find('img').not('.loaded-before').each(
function() {
description = $(this).attr("alt");
$(this).addClass('loaded-before');
});
formData = new FormData();
formData.append('file', blobInfo.blob(), blobInfo.filename());
formData.append('description', description); //found now))
xhr.send(formData);
}
以下可能会对您有所帮助 https://www.tinymce.com
<!DOCTYPE html>
<html>
<head>
<script src="https://cloud.tinymce.com/stable/tinymce.min.js"></script>
<script>tinymce.init({ selector:'textarea' });</script>
</head>
<body>
<textarea>Next, get a free TinyMCE Cloud API key!</textarea>
</body>
</html>