参考:
主要参考:http://www.ishenping.com/ArtInfo/1193349.html
https://www.cnblogs.com/baiyygynui/p/8463771.html
https://blog.csdn.net/fyw_wu/article/details/80680661
https://developer.mozilla.org/zh-CN/docs/Web/API/FormData/append
https://www.jb51.net/article/147092.htm
http://www.it165.net/DWeb/html/201601/4384.html
转载后,简单改编为支持自动上传到服务器
umeditor.js下面代码中:(红色地方)
me.addListener('ready', function () {
if (window.FormData && window.FileReader) {
var autoUploadHandler = function (e) {
debugger;
var hasImg = false,
items;
//获取粘贴板文件列表或者拖放文件列表
items = e.type == 'paste' ? getPasteImage(e.originalEvent) : getDropImage(e.originalEvent);
if (items) {
var len = items.length,
file;
while (len--) {
file = items[len];
if (file.getAsFile) file = file.getAsFile();
if (file && file.size > 0 && /image\/\w+/i.test(file.type)) {
sendAndInsertImage(file, me);
hasImg = true;
}
}
if (hasImg) return false;
}
else{
// word里面的图片不会当做图片,而是text/plain, 用getPasteImage 获取不到
/ /todo 目前只是支持单个图片,不包含文字的,支持图片的,需要再修改下代码。稍等。
var text = e.originalEvent.clipboardData.getData("text");
if(text == ""){
var items=e.originalEvent.clipboardData.items;
for (var i = 0, len = items.length; i < len; i++) {
var item = items[i];
if ( item.kind == 'file' && item.type.indexOf('image/') !== -1 ) {
if (item.getAsFile) file = item.getAsFile();
var blob = item.getAsFile();
sendAndInsertImage(blob,me); //上传到服务器
//阻止默认事件, 避免重复添加;
e.originalEvent.preventDefault();
};
}
}
}
};
me.getOpt('pasteImageEnabled') && me.$body.on('paste', autoUploadHandler);
me.getOpt('dropFileEnabled') && me.$body.on('drop', autoUploadHandler);
//取消拖放图片时出现的文字光标位置提示
me.$body.on('dragover', function (e) {
if (e.originalEvent.dataTransfer.types[0] == 'Files') {
return false;
}
});
}
});
word中的图片是没问题,但是如果是图文混在一起的话,里面的文件就不是file类型,file.getAsFile 就获取不到,只能通过e.originalEvent.clipboardData.getData('text/html') 获取到html,不过里面的文件的地址是本地路径,还是有问题。