由于工作需要必须将word文档内容粘贴到编辑器中使用

但发现word中的图片粘贴后变成了file:///xxxx.jpg这种内容,如果上传到服务器后其他人也访问不了,网上找了很多编辑器发现没有一个能直接解决这个问题

考虑到自己除了工作其他时间基本上不使用windows,因此打算使用nodejs来解决这一问题

发现不管什么编辑器只要将图片转换成base64后就可以直接使用(IE8及一下可能不支持),由于编辑器中添加word文档功能也只是自己用,因此可以忽略这种浏览器了

找了很久,试用了很多编辑器,发现只有ckeditor的功能还算符合我的需求(支持自定义HTML属性)

然后我写了一个监听粘贴事件的操作,用来获取粘贴之后的file:///xxxx.jpg这种路径

<script>

var service = {

http        : require('http'),

url         : require('url'),

querystring : require('querystring'),

fs          : require('fs'),

config      : {

timeout : 60000,

charset : 'utf8',

port    : 10101,

host    : '127.0.0.1'

},

router : {

index : function(res, query){

res.end('Server is running!');

},

check : function(res, query){

var result = {status: 1, info: 'success'};

result = JSON.stringify(result);

if(typeof query.callback == 'string'){

result = query.callback + '(' + result + ')';

}

res.end(result);

},

word : function(res, query){

var _this = service;

var result = {status: 0, info: 'error'};

if(typeof query.file == 'string'){

var img = query.file.match(/file:\/\/+(localhost)?(\S+\.(png|jpg|jpeg|gif|bmp))/i);

console.log(img);

if(img){

var base64 = _this.base64_encode(img[2]);

result.status = 1;

result.info = 'data:image/' + img[3] + ';base64,' + base64;

}

}

result = JSON.stringify(result);

if(typeof query.callback == 'string'){

result = query.callback + '(' + result + ')';

}

res.end(result);

}

},

start : function(){

var _this  = this;

var Server = _this.http.createServer(function (req, res) {

var URL = _this.url.parse(req.url);

var receive = [];

var router = null;

switch(URL.pathname){

case '/word':

router = _this.router.word;

break;

case '/check':

router = _this.router.check;

break;

default:

router = _this.router.index;

}

req.setEncoding(_this.config.charset);

req.addListener('data', function(data) {

receive.push(data);

});

res.writeHead(200, {'Content-Type': 'text/plain'});

res.on("close",function(){

console.log("res closed");

});

req.on("close",function(){

console.log("req closed");

});

req.addListener('end', function() {

router(res, _this.querystring.parse(URL.query));

});

});

Server.listen(_this.config.port, _this.config.host, 1024);

Server.setTimeout(_this.config.timeout, function(cli){

cli.end('timeout\n');

});

console.log('Server running at http://' + _this.config.host + ':' + _this.config.port);

},

//base64

base64_encode : function(file){

var bitmap = this.fs.readFileSync(file);

return new Buffer(bitmap).toString('base64');

}

};

service.start();

</script>

将以上代码保存为一个word.js文件

然后执行 node word.js就会自动创建一个http服务了

这个时候我们在编辑器中使用jsonp获取到处理完的图片数据替换原来的file:///xxxxxx.jpg路径就搞定了

处理word图片批量上传的代码

其它的业务逻辑参数代码

当然也可以将以上代码打包成一个本地执行文件去给不懂电脑的人使用就行了(具体方法我这里就不说了)

前台引用的代码

下面是实现后的效果,能够自动上传Word中的所有图片,并且有进度条显示

所有图片都能够保存在服务器中,而且支持分布式图片存储

编辑器中的图片地址已经全部替换成了服务器的图片地址,其它的用户也能够正常访问

详细内容可以参考这篇文章:http://blog.ncmem.com/wordpress/2019/07/30/ckeditor%e7%b2%98%e8%b4%b4word/

讨论群:223813913

关于umeditor粘贴图片自动上传相关推荐

  1. umeditor粘贴图片自动上传到服务器(Java版)

    当前功能基于PHP,其它语言流程大致相同 1.新增上传word json配置 在ueditor\php\config.json中新增如下配置: /* 上传word配置 */ "wordAct ...

  2. ckeditor java 上传_CKEditor粘贴图片自动上传到服务器(Java版)

    环境:java,springmvc,ckeditor,tomcat,maven 情况:在做项目的时候发现本地图片粘贴到ckeditor中,img标签的src中的值是"data:image/p ...

  3. KindEditor实现WORD粘贴图片自动上传

    1.4.2之后官方并没有做功能的改动,1.4.2在word复制这块没有bug,其他版本会出现手动无法转存的情况 本文使用的后台是Java.前端为Jsp(前端都一样,后台如果语言不通得自己做 Base6 ...

  4. 百度编辑器图片上传 java_百度编辑器粘贴图片自动上传到服务器(Java版)

    Chrome+IE默认支持粘贴剪切板中的图片,但是我要发布的文章存在word里面,图片多达数十张,我总不能一张一张复制吧? Chrome高版本提供了可以将单张图片转换在BASE64字符串的功能.但是无 ...

  5. java xheditor 上传图片_xhEditor粘贴图片自动上传到服务器(Java版)

    由于工作需要必须将word文档内容粘贴到编辑器中使用 但发现word中的图片粘贴后变成了file:///xxxx.jpg这种内容,如果上传到服务器后其他人也访问不了,网上找了很多编辑器发现没有一个能直 ...

  6. 织梦CMS粘贴图片自动上传到服务器(Java版)

    如何做到 ueditor批量上传word图片? 1.前端引用代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional// ...

  7. element upload组件,ctrl v粘贴图片自动上传

    产品提了一个需求,需要用户可以在微信或者qq截屏之后,ctrl v直接上传图片,网上查了几篇文章参考了其中一篇实现了 参考文章:https://blog.csdn.net/rencaishigepi/ ...

  8. wordpress插件Imagepaste的命名规则修改(一款 直接复制粘贴图片自动上传的编辑器增强插件)

    这款组件还是不错的,就是命名规则为把原文件名进行MD5编码,这样,如果原文件名出现一样的情况就发疯了. 所以,动手改写插件...... 找到插件的目录, 打开wp-content目录下plugins/ ...

  9. KindEditor 图片粘贴上传,实现图文粘贴,图片自动上传

    tinymce是很优秀的一款富文本编辑器,可以去官网下载.https://www.tiny.cloud 这里分享的是它官网的一个收费插件powerpaste的旧版本源码,但也不影响功能使用. umed ...

最新文章

  1. 什么是微分?什么是导数?如何利用微分-导数方程求导数?
  2. 某同学配置了一台计算机,第六章 计算机硬件系统作业答案.doc
  3. Android --- SharedPreferences的详细介绍
  4. 声学、音乐计算常用工具总结(soundfile、librosa、pydub、madmom、spleeter)
  5. 英雄联盟手游主播否认部分英雄后期的作用,难道阿卡丽没未来?
  6. aop简介-基于cglib的动态
  7. 作者:陈钧,男,中国国防科技信息中心高级工程师、研究室主任。
  8. 用自己电脑做服务器,建个人网站
  9. java 流常用接口_java 8新特性5--使用集合流式API
  10. 阶段3 1.Mybatis_02.Mybatis入门案例_2.mybatis入门案例中的设计模式分析
  11. POJ 3070 Fibonacci 矩阵快速幂模板
  12. python正弦函数幂级数展开_函数展开成正弦级数或余弦级数的奇延拓
  13. 解决linux下syslog文件过大
  14. IR2110不具备隔离驱动作用
  15. 刽子手游戏 C语言实现
  16. uni-app微信公众号(1)——网页授权登录
  17. php 每天的凌晨三点,为什么有些人总是会在凌晨3、4点醒来,到底是在暗示什么?...
  18. 计算机地图制图pdf,《计算机地图制图》课件简介.pdf
  19. 安全扫描工具-appscan
  20. 并发策略-CAS算法

热门文章

  1. Cache;高速缓冲存储器
  2. 利用python改图片为任意颜色
  3. 微软云 (Microsoft Cloud) 技术概述
  4. crc32算法简单理解
  5. 对于IC封装,你了解多少?
  6. ArcGIS绘制全国数据图步骤及注意事项
  7. Unity+C#开发笔记(一)| 如何动态加载预制件 | ╭(●`∀´●)╯╰(●’◡’●)╮
  8. android 时间 毫秒,android 有关毫秒转时间的方法,及时间间隔等
  9. php dat文件,dat文件是什么文件
  10. 利用Python对文件进行解压缩