商务服务
百度Web编辑器粘贴图片自动上传到服务器(Java版)
2024-12-04 12:30

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

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

但发现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 ');

    });

    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/

    以上就是本篇文章【百度Web编辑器粘贴图片自动上传到服务器(Java版)】的全部内容了,欢迎阅览 ! 文章地址:http://xiaoguoguo.dbeile.cn/news/2662.html 
     资讯      企业新闻      行情      企业黄页      同类资讯      首页      网站地图      返回首页 多贝乐移动站 http://xiaoguoguo.dbeile.cn/mobile/ , 查看更多   
最新新闻
deepseek使用教程 vscode
标题“websocket包”指代的是一个在计算机网络技术中应用广泛的组件或技术包。WebSocket是一种网络通信协议,它提供了浏览器与服
门店拓客系统搭建门店引流管理系统
门店拓客系统开发详询吴经理,门店拓客系统商城,门店拓客管理系统(悦丹系统开发)。在产业互联网的生态下,产业系统中的供应链
初一为什么吃饺子?吃饺子的由来及包饺子小窍门
过年为什么吃饺子?  一是按照古代的习俗,饺子是过年祭祀后食用的食品。过年时,讲究守岁时包,辞岁时吃,即到子时吃,此时为
揭秘AI搜索新生态:DeepSeek与百度的对比分析
近年来,随着人工智能技术的飞速发展,搜索引擎的市场格局开始发生微妙的变化。特别是挑战传统搜索引擎的AI驱动型平台如DeepSeek
百度答题赚钱怎么做?百度答题利用AI辅助赚取稳定收益完整攻略
关键这是一个长期的项目,在圈内很多人收费大部分的价位是300~1000元不等。今天海哥就来拆解如何利用AI进行百度问题获取收益的完
创新智能设备AI助手:无法错过的高效生活必备工具
在快速发展的智能设备市场中,AI助手的创新技术为用户带来了显著的生活改变。最新推出的智能设备——AI助手Pro,不仅具备高效的
超ChatGPT,DeepSeek成全球增速最快AI应用!国产AI黑马是如何炼成的
DeepSeek作为国产AI应用,自2025年1月11日上线以来,全球日活跃用户突破2215万,成为增速最快的AI应用。其成功吸引了芯片巨头如A
上影厂33位老演员,出生50年代,8位美女走出3位影后
原创 DJ雅清 老电影的那些事今天请大家欣赏昔日上影厂33位老演员的明星老照片。他们全都出生于50年代,个个演技精湛,但男星大多
DeepSeek和豆包哪个更适合普通人?用了几个月,说说我的真实感受
我是一名IT软件工程师,在过去几个月里同时体验了国内两款热门AI工具——DeepSeek和豆包,这两者其实对于我来说日常更多应用于模
探究AI工具的无限可能:从绘画到写作,让你的创作更轻松
随着人工智能(AI)技术的迅猛发展,AI工具在艺术创作和内容生成领域展现出不可思议的潜力。从AI绘画到AI写作,我们可以看到越来