配置参考 \ 图片&文件上传配置设置TinyMCE的图片和文件上传参数
此页更新时间:2020-10-28 11:46
此页英文文档:https://www.tiny.cloud/docs/configure/file-image-upload/
配置选项列表:
- automatic_uploads
- file_picker_callback(文件上传回调)
- file_picker_types(文件选择器的使用场景)
- images_dataimg_filter
- images_reuse_filename
- images_upload_url(上传实现的URL)
- images_upload_base_path(图片地址基本目录)
- images_upload_credentials
- images_upload_handler(图片上传自定义实现)
如要快速上手,可以阅读《简介与入门:上传图片和文件》这个章节,里面包含完整的上传代码示例。
automatic_uploads
开关使用Data URL/Blob URL插入图片和文件到内容区的方式。例如,图像是使用imagetools插件处理后插入到内容区的,此时图像并未真正上传到服务器,而是以Data URL/Blob URL的方式插入在内容中。
该选项默认是开启的,如禁用,则必须配置images_upload_url,即指定接收图片上传的远程地址,如未指定该配置,则禁用无效。
也可使用tinymce自带方法 uploadImages 手动上传。
取值:true / false
默认:true
tinymce.init({
selector: '#textarea1',
automatic_uploads: false,
images_upload_url: 'postAcceptor.php',
});
file_picker_callback(文件上传回调)
配置此选项将在图片、媒体、链接对话框中加入上传文件功能
当用户点击上传按钮后,TinyMCE将在你自定义的函数中传递三个参数:
- callback:上传成功后执行的回调函数,此函数是由TinyMCE定义的,它的第一个参数是上传结果,第二个参数可以是一个object,其中定义了要填入对话框中的字段键值。
- value:当前受影响的字段值
- meta:为一个包含指定对话框中其它字段值的对象(meta.filetype是当前对话框的文件类型)
注意:file_picker_callback仅为一个自定义钩子,具体上传功能需要自己实现。
取值:Function
该功能的演示请参考:《简介与入门:上传图片和文件》中的文件上传部分,里面包含完整的上传代码示例。
file_picker_types(文件选择器的使用场景)
使用空格或逗号分隔,允许的值包括:file,image和media。该选项需配合file_picker_types使用,未指定的对话框则不会出现文件上传按钮。file对应链接对话框,image对应图片对话框,media对应多媒体对话框。
类型:String
取值:'file image media'
tinymce.init({
selector: '#textarea1',
file_picker_callback: function(){},
file_picker_types: 'file image media',
});
images_dataimg_filter
5.3.0不推荐使用,并于5.3.2被移除
定义一个自定义过滤器处理base64图像转blobs的逻辑。
该函数的参数是一个DOM对象。
取值:Function
tinymce.init({
selector: '#textarea1',
images_dataimg_filter: function(img) {
return img.hasAttribute('internal-blob');
}
});
images_reuse_filename
TinyMCE默认会给每个上传的文件生成唯一的文件名。有时候我们不希望这么做,例如,automatic_uploads被开启时,尽管当前图片文件没有变,但使用imagetools插件对图像进行每一次操作都会导致文件上传,并且每次都将使用不同的文件名。
将该配置设为true则可以避免此问题,它将告诉TinyMCE使用图片文件实际的文件名,而不是每次随即生成一个新的。
因为img标签的src属性可能是服务器返回来的任何文件名,该文件名将在下次上传时被使用。
译者注:该配置目前仅imagetools插件有用。
取值:true / false
默认:false
tinymce.init({
selector: '#textarea1',
automatic_uploads: true,
images_upload_url: 'postAcceptor.php',
images_reuse_filename: true,
});
images_upload_url(上传实现的URL)
指定接收上传图片的后端地址。调用editor.uploadImages()或utomatically时如果启用automatic_uploads则会触发该配置。
上传程序应按以下格式返回上传后的文件url:
//json格式
{ "location": "folder/sub-folder/new-location.png" }
该功能的演示请参考:《简介与入门:上传图片和文件》,里面包含完整的上传代码示例。
取值:string
images_upload_url: 'postAcceptor.php'
images_upload_base_path(图片地址基本目录)
指定一个基本路径,多用于不同目录结构中,修正上传图片功能返回的图片相对地址。
取值:string
images_upload_base_path: '/some/basepath'
images_upload_credentials
对images_upload_url中指定的地址调用时是否传递cookie等跨域的凭据。
取值:true / false
默认:false
images_upload_credentials: true
images_upload_handler(图片上传自定义实现)
此选项允许你使用自定义函数代替TinyMCE来处理上传操作。该自定义函数可接受四个参数:
- blobInfo
- 成功回调
- 失败回调
- 上传进度(取值1-100)
如果未使用此配置,TinyMCE将使用ajax每次上传一个图片,并在成功返回结果后调用成功回调函数。
此函数将完全接管编辑器的图片上传,你需要在上传成功后执行成功回调函数,参数则为图片URL,也可以在第二个参数加入对话框填充数据对象。
取值:Function
以下为自定义上传实现的一个代码示例:
tinymce.init({
selector: '#textarea1',
images_upload_handler: function (blobInfo, success, failure, progress) {
var xhr, formData;
xhr = new XMLHttpRequest();
xhr.withCredentials = false;
xhr.open('POST', 'postAcceptor.php');
xhr.upload.onprogress = function(e){
progress(e.loaded / e.total * 100);
}
xhr.onload = function() {
var json;
if (xhr.status == 403) {
failure('HTTP Error: ' + xhr.status, { remove: true });
return;
}
if (xhr.status < 200 || xhr.status >= 300 ) {
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);
};
xhr.onerror = function () {
failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);
}
formData = new FormData();
formData.append('file', blobInfo.blob(), blobInfo.filename());
xhr.send(formData);
}
});
下一节:本地化配置