首页 > 其他分享 >wangEditor集成Word导入

wangEditor集成Word导入

时间:2022-10-19 11:08:31浏览次数:82  
标签:function Word wangEditor res 导入 result router var query

由于工作需要必须将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图片批量上传的代码

wangEditor集成Word导入_sed


其它的业务逻辑参数代码

wangEditor集成Word导入_服务器_02


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

前台引用的代码

wangEditor集成Word导入_sed_03


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

wangEditor集成Word导入_json_04


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

wangEditor集成Word导入_服务器_05


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

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


标签:function,Word,wangEditor,res,导入,result,router,var,query
From: https://blog.51cto.com/u_15724552/5768995

相关文章

  • 文件系统模块1(导入,写入)
    1导入fs模块constfs=require('fs')2,读取文件内容fs.readFlie(path,'utf8',function(err,dataStr){console.log(err)console.log('-----')console.log(dataStr)......
  • 模块的导入相关知识
    昨日内容回顾异常处理的语法结构try: 下跟被监测的子代码except: 后跟错误类型子代码为该类型错误解决的提示else: 被监测的子代码正常运行时运行的代码fin......
  • python模块/导入模块
    索引取值与迭代取值的差异l1=[1,2,3,4,5]1.索引取值可以任意位置任意次数的取值不支持无序类型的数据取值print(l1[3])print(l1[3])#可以直接获取任意位置的......
  • 进入python的世界_day17_python基础——了解模块、如何使用和导入模块、包的原理
    一、模块介绍1.什么是模块​ 其实我们前一阵已经接触过了,importxxx、fromxximportxxx​ 能够有一定功能的集合体就是模块,比如有某些功能的py文件,包含这个文件的......
  • 循环导入、文件类型、模块查找、包
    索引取值与迭代取值的差异l1=[11,22,33,44,55]1.索引取值 可以任意位置任意次数取值不支持无序类型的数据取值2.迭代取值 只能从前往后依次取值无法后退......
  • 模块导入的句式、模块的查找顺序
    今日内容回顾目录今日内容回顾索引取值和迭代取值的差异模块简介导入模块的两种句式导入模块的补充循环导入问题判断文件类型模块的查找顺序绝对导入与相对导入包package......
  • python基础:模块简介、模块的语句、绝对导入和相对导入
    python基础:模块简介、模块的语句、绝对导入和相对导入目录一、索引取值与迭代取值的差异二、模块简介三、模块的分类四、导入模块的两种句式1.import句式2.from...import......
  • 19、python模块 模块的导入和使用
    目录一、模块1、简介2、模块的表现形式二、模块的分类1、自定义模块2、内置模块3、第三方模块三、导入模块的句式学前须知:1、import句式2、from...import...句式3、补充说......
  • Flink WordCount入门
    下面通过一个单词统计的案例,快速上手应用Flink,进行流处理(Streaming)和批处理(Batch)单词统计(批处理)引入依赖<!--flink核心包--><dependency><groupId>org.apa......
  • 原生js导出word、导出excel
    导出word文件导出部分HTML成word文件。注意:部分样式word不支持,图片需要设置width和height属性/***下载文件*@param{string}url文件地址*@param{string}f......