PHPMyWind支持Word导入

由于工作需要必须将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中的所有图片,并且有进度条显示

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

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

更多详细资料可以参考这篇文章:

详细思路及源码

示例下载:

wordpaster-vue3-cli-ueditor1.5wordpaster-vue-ueditor1.5wordpaster-asp.net-ueditor1.5xwordpaster-php-ueditor1xwordpaster-jsp-ueditor1x​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PHPMyWind CMS官方版 v4.6.5 Beta,是目前该系统网站的最新版本,PHPMyWind是一个品牌,一款基于PHP+MySQL开发符合W3C标准的建站引擎。它将带给人们一系列高效的,成熟的企业网站建设解决方案,让您的信息以更健康的形式高速传递给需要的它的人们,同时让您感受通过PHPMyWind带给您畅快体验。 设计理念 我们追求速度与舒适度。PHPMyWind要做的,只是贴近再贴近中国建站行业人员的使用习惯。在我们的眼中,PHPMyWind不止是一款CMS。它是一套底层代码,是工具箱,是万花筒。我们工作中的任何项目都可以通过改动它来完成。前提是我们都具备PHP的开发基础。我们会尽一切努力把代码与结构制作的简单易懂。你需要什么,尽管来拿! 开发语录 PHPMyWind 前台与后台完全采用PHP代码开发完成,测试过使用框架或模板引擎,虽然MVC很理想,可是却增加了二次开发的难度,特别影响速度。PHPMyWind 主要面向的开发者就是企业建站行业的童鞋们。我们需要的是简单的,快速的,稳定的,拆分性较强的CMS。可能每个站只有几个栏目,亦或网站功能较为特殊需要定制。所以,对模块化要求极强。因此,我们总结上述几点是企业建站开发者们最需要的几点需求,以此为突破口,开发过程中时刻遵循于此。我们希望,开发者在开发的过程中感觉快速、舒适,这是我们的追求。 PHPMyWind 从2010年开发至今已有2年时间,其间已经过4次重写。结构,代码写法逐步成熟。系统内置多个类以及函数,大幅提升开发速度。如目前对系统类使用不惯得同学们,也可以采用PHP内置原生函数开发。每个前台页面保证在头部调用 /include/config.inc.php 即可初始化系统代码,进行开发工作。前台只作为示例展示,与后台关联程度不高,但也可直接使用。目前您可视PHPMyWind为一款CMS核心,在它之上制作丰富的网站。 PHPMyWind v4.6.5 Beta 更新时间:2013-08-28 更新说明: 【更新】 1.新增管理组与权限管理 2.全新设计后台登陆界面 3.更新后台界面样式 【优化】 1.优化对创建超级管理员的权限判断 2.优化类别折叠效果 【修复】 1.修复部分环境下多站切换无效问题 2.修复快捷导航浏览器兼容性的问题 3.修复导航缩略图片只显示路径问题 4.修复关闭文章评论后收藏失效问题 5.修复自定义菜单项添加报错问题 6.修复新增变量为空时不报错问题 7.修复分页页码为负数报错问题 8.修复编辑器过滤HTML标记问题 9.修复管理员问题回答错误问题 10.修复快捷导航链接错误问题 11.修复编辑器v4.1.7多图路径问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值