UMEditor 图片粘贴上传,实现图文粘贴,图片自动上传

ueditor 百度富文本编辑器后端配置(上传图片) 1,在public/assets/addons/ueditor内新建 config.json并加入以下代码。这个时候已经管用了但是上传图片没有前缀,无法在富文本编辑器内回显,这个时候回到上传接口这一步。在这个地方拼接一下自己的前缀即可回显成功。 阅读详情

当前功能基于PHP,其它语言流程大抵相同。

大概流程:

1. 将docx文件上传到服务器中

2. 使用PHPoffice/PHPword实现将word转换为HTML

3. 将HTML代码返回并赋值到编辑器中

1 编辑器配置修改

1.1 新增上传word json配置

在ueditor\php\config.json中新增如下配置:

    /* 上传word配置 */

    "wordActionName": "wordupload", /* 执行上传视频的action名称 */

    "wordFieldName": "upfile", /* 提交的视频表单名称 */

    "wordPathFormat": "/public/uploads/word/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */

    "wordMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */

    "wordAllowFiles": [".docx"] /* 仅支持docx格式的word */

1.2 修改编辑器配置文件

1.2.1 在工具栏上新增按钮

在ueditor\ueditor.config.js文件中,新增按钮名称"wordupload",并添加鼠标悬浮提示,如下所示:

        //工具栏上的所有的功能按钮和下拉框,可以在new编辑器的实例时选择自己需要的重新定义

        , toolbars: [[

            'fullscreen', 'source', '|', 'undo', 'redo', '|',

            'bold', 'italic', 'underline', 'fontborder', 'strikethrough', 'superscript', 'subscript', 'removeformat', 'formatmatch', 'autotypeset', 'blockquote', 'pasteplain', '|', 'forecolor', 'backcolor', 'insertorderedlist', 'insertunorderedlist', 'selectall', 'cleardoc', '|',

            'rowspacingtop', 'rowspacingbottom', 'lineheight', '|',

            'customstyle', 'paragraph', 'fontfamily', 'fontsize', '|',

            'directionalityltr', 'directionalityrtl', 'indent', '|',

            'justifyleft', 'justifycenter', 'justifyright', 'justifyjustify', '|', 'touppercase', 'tolowercase', '|',

            'link', 'unlink', 'anchor', '|', 'imagenone', 'imageleft', 'imageright', 'imagecenter', '|',

            'simpleupload', 'insertimage', 'emotion', 'scrawl', 'insertvideo', 'music', 'attachment', 'map', 'gmap', 'insertframe', 'insertcode', 'webapp', 'pagebreak', 'template', 'background', '|',

            'horizontal', 'date', 'time', 'spechars', 'snapscreen', 'wordimage', '|',

            'inserttable', 'deletetable', 'insertparagraphbeforetable', 'insertrow', 'deleterow', 'insertcol', 'deletecol', 'mergecells', 'mergeright', 'mergedown', 'splittocells', 'splittorows', 'splittocols', 'charts', '|',

            'print', 'preview', 'searchreplace', 'drafts', 'help', 'wordupload'

        ]]

        //当鼠标放在工具栏上时显示的tooltip提示,留空支持自动多语言配置,否则以配置值为准

        ,labelMap:{

           'wordupload': '上传word文件',

        }

在ueditor\themes\default\images\目录下新增按钮图标"word_upload.png":

在ueditor\themes\default\css\ueditor.css文件中新增按钮样式:

.edui-for-wordupload .edui-icon {

    width: 16px;

    height: 16px;

    background: url(../images/word_upload.png) no-repeat 2px 2px !important;

}

最后在ueditor\ueditor.all.js文件中editorui["simpleupload"] = function (editor){}后面添加如下代码:

/* word上传 */

    editorui["wordupload"] = function (editor) {

        var name = 'wordupload',

            ui = new editorui.Button({

                className:'edui-for-' + name,

                title:editor.options.labelMap[name] || editor.getLang("labelMap." + name) || '',

                onclick:function () {},

                theme:editor.options.theme,

                showText:false

            });

        editorui.buttons[name] = ui;

        editor.addListener('ready', function() {

            var b = ui.getDom('body'),

                iconSpan = b.children[0];

            editor.fireEvent('worduploadbtnready', iconSpan);

        });

        editor.addListener('selectionchange', function (type, causeByUi, uiReady) {

            var state = editor.queryCommandState(name);

            if (state == -1) {

                ui.setDisabled(true);

                ui.setChecked(false);

            } else {

                if (!uiReady) {

                    ui.setDisabled(false);

                    ui.setChecked(state);

                }

            }

        });

        return ui;

    };

最终样式如下:

1.2.2 新增语言配置

在ueditor\lang\zh-cn\zh-cn.js文件中在"simpleupload"配置下方新增以下配置:

'simpleupload':{

        'exceedSizeError': '文件大小超出限制',

        'exceedTypeError': '文件格式不允许',

        'jsonEncodeError': '服务器返回格式错误',

        'loading':"正在上传...",

        'loadError':"上传错误",

        'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!'

    },

    'wordupload':{

        'exceedSizeError': '文件大小超出限制',

        'exceedTypeError': '文件格式不允许',

        'jsonEncodeError': '服务器返回格式错误',

        'loading':"正在上传...",

        'loadError':"上传错误",

        'errorLoadConfig': '后端配置项没有正常加载,上传插件不能正常使用!'

    },

在ueditor\lang\zh-cn\en.js文件中在"simpleupload"配置下方新增以下配置:

'simpleupload':{

        'exceedSizeError': 'File Size Exceed',

        'exceedTypeError': 'File Type Not Allow',

        'jsonEncodeError': 'Server Return Format Error',

        'loading':"loading...",

        'loadError':"load error",

        'errorLoadConfig': 'Server config not loaded, upload can not work.',

    },

    'wordupload':{

        'exceedSizeError': 'File Size Exceed',

        'exceedTypeError': 'File Type Not Allow',

        'jsonEncodeError': 'Server Return Format Error',

        'loading':"loading...",

        'loadError':"load error",

        'errorLoadConfig': 'Server config not loaded, upload can not work.',

    },

1.2.3 修改过滤配置

由于导入word时,编辑器会自动过滤掉图片等样式,所以需取消过滤

在ueditor\ueditor.config.js文件中修改如下配置:

// xss 过滤是否开启,inserthtml等操作

,xssFilterRules: false

//input xss过滤

,inputXssFilter: false

//output xss过滤

,outputXssFilter: false

在ueditor\ueditor.all.js文件中,修改UE.plugins[‘defaultfilter’],新增return ;如下所示:

// plugins/defaultfilter.js

///import core

///plugin 编辑器默认的过滤转换机制

UE.plugins['defaultfilter'] = function () {

    return;

    var me = this;

    me.setOpt({

        'allowDivTransToP':true,

        'disabledTableInTable':true

    });

……

2 添加相关功能

2.1 安装PHPword

composer require phpoffice/phpword

1

2.2 自定义文件转换类

实现上传文件,并将文件转换为HTML

直接将ueditor自带的上传文件"ueditor\php\Uploader.class.php"类复制到自定义类相同目录下

自定义WordToHtmlController.class.php文件:

<?php

class WordToHtmlController

{

    public function index()

    {

        require 'vendor/autoload.php';

        $base64 = "upload";

        $config = array(

            "pathFormat" => '/public/uploads/word/{yyyy}{mm}{dd}/{time}{rand:6}',

            "maxSize" => 102400000,

            "allowFiles" => [".docx"]

        );

        $fieldName = 'upfile';

        include 'Uploader.class.php';

        $up = new Uploader($fieldName, $config, $base64);

        $path = ltrim($up->getFileInfo()['url'], '/');

//        $phpWord = \PhpOffice\PhpWord\IOFactory::load('public/uploads/word/20211029/test.docx');

        $phpWord = \PhpOffice\PhpWord\IOFactory::load($path);

        // 直接输出到页面显示

//        $phpWord->save('php://output', 'HTML');

        $xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'HTML');

        header("Content-Type:text/html; charset=utf-8");

        exit($this->replaceImageSrc($xmlWriter->getContent()));

//        exit($xmlWriter->getContent());

    }

    /**

     * 将HTML代码中的所有图片地址替换

     * @param $content string 要查找的内容

     * @return string

     */

    private function replaceImageSrc($content)

    {

        $preg = '/(\s+src\s?\=)\s?[\'|"]([^\'|"]*)/is'; // 匹配img标签的正则表达式

        preg_match_all($preg, $content, $allImg); // 匹配所有的img

        if (!$allImg)

            return $content;

        foreach ($allImg[0] as $k => $v) {

            $old = ltrim($v, '" src=');

            preg_match('/^(data:\s*image\/(\w+);base64,)/', $old, $temp);

            $tempType = $temp[2];   // 获取类型

            // 判断目录是否存在,不存在时创建

            $tempFilePath = 'public/uploads/word_images/' . date('Y-m-d', time());

            if (!file_exists($tempFilePath))

                mkdir($tempFilePath);

            // 拼接完整路径

            $tempFileName = $tempFilePath . '/word_image_' . time() . $k . '.' . $tempType;

            $base64 = str_replace($temp[1], '', $old);

            file_put_contents($tempFileName, base64_decode($base64));

            // 替换路径字符串

            $content = str_replace($old, $tempFileName, $content);

        }

        return $content;

    }

}

2.3 编辑器实现导入操作

在ueditor\ueditor.all.js文件中UE.plugin.register('simpleupload', function (){})下方新增如下方法:

/**

 * @description

 * word上传:点击按钮,直接选择文件上传

 */

UE.plugin.register('wordupload', function (){

    var me = this,

        isLoaded = false,

        containerBtn;

    function initUploadBtn(){

        var w = containerBtn.offsetWidth || 20,

            h = containerBtn.offsetHeight || 20,

            btnIframe = document.createElement('iframe'),

            btnStyle = 'display:block;width:' + w + 'px;height:' + h + 'px;overflow:hidden;border:0;margin:0;padding:0;position:absolute;top:0;left:0;filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity: 0;opacity: 0;cursor:pointer;';

        domUtils.on(btnIframe, 'load', function(){

            var timestrap = (+new Date()).toString(36),

                wrapper,

                btnIframeDoc,

                btnIframeBody;

            btnIframeDoc = (btnIframe.contentDocument || btnIframe.contentWindow.document);

            btnIframeBody = btnIframeDoc.body;

            wrapper = btnIframeDoc.createElement('div');

            wrapper.innerHTML = '<form id="edui_form_' + timestrap + '" target="edui_iframe_' + timestrap + '" method="POST" enctype="multipart/form-data" action="' + me.getOpt('serverUrl') + '" ' +

                'style="' + btnStyle + '">' +

                '<input id="edui_input_' + timestrap + '" type="file" accept="application/msword" name="' + me.options.wordFieldName + '" ' +

                'style="' + btnStyle + '">' +

                '</form>' +

                '<iframe id="edui_iframe_' + timestrap + '" name="edui_iframe_' + timestrap + '" style="display:none;width:0;height:0;border:0;margin:0;padding:0;position:absolute;"></iframe>';

            wrapper.className = 'edui-' + me.options.theme;

            wrapper.id = me.ui.id + '_iframeupload';

            btnIframeBody.style.cssText = btnStyle;

            btnIframeBody.style.width = w + 'px';

            btnIframeBody.style.height = h + 'px';

            btnIframeBody.appendChild(wrapper);

            if (btnIframeBody.parentNode) {

                btnIframeBody.parentNode.style.width = w + 'px';

                btnIframeBody.parentNode.style.height = w + 'px';

            }

            var form = btnIframeDoc.getElementById('edui_form_' + timestrap);

            var input = btnIframeDoc.getElementById('edui_input_' + timestrap);

            var iframe = btnIframeDoc.getElementById('edui_iframe_' + timestrap);

            domUtils.on(input, 'change', function(){

                if(!input.value) return;

                var loadingId = 'loading_' + (+new Date()).toString(36);

                var allowFiles = me.getOpt('wordAllowFiles');

                me.focus();

                me.execCommand('inserthtml', '<img class="loadingclass" id="' + loadingId + '" src="' + me.options.themePath + me.options.theme +'/images/spacer.gif" title="' + (me.getLang('wordupload.loading') || '') + '" >');

                function callback(){

                    try{

                        // 获取到内容

                        var body = (iframe.contentDocument || iframe.contentWindow.document).body;

                        // 获取加载中图片并关闭

                        var loader = me.document.getElementById(loadingId);

                        loader.removeAttribute('id');

                        domUtils.removeClasses(loader, 'loadingclass');

                        // 向编辑器赋值

                        me.setContent(body.innerHTML, false);

                        // me.execCommand('insertHtml', body.innerHTML);

                    }catch(er){

                        showErrorLoader && showErrorLoader(me.getLang('wordupload.loadError'));

                    }

                    form.reset();

                    domUtils.un(iframe, 'load', callback);

                }

                function showErrorLoader(title){

                    if(loadingId) {

                        var loader = me.document.getElementById(loadingId);

                        loader && domUtils.remove(loader);

                        me.fireEvent('showmessage', {

                            'id': loadingId,

                            'content': title,

                            'type': 'error',

                            'timeout': 4000

                        });

                    }

                }

                /* 判断后端配置是否没有加载成功 */

                if (!me.getOpt('wordActionName')) {

                    errorHandler(me.getLang('autoupload.errorLoadConfig'));

                    return;

                }

                // 判断文件格式是否错误

                var filename = input.value,

                    fileext = filename ? filename.substr(filename.lastIndexOf('.')):'';

                if (!fileext || (allowFiles && (allowFiles.join('') + '.').indexOf(fileext.toLowerCase() + '.') == -1)) {

                    showErrorLoader(me.getLang('wordupload.exceedTypeError'));

                    return;

                }

                domUtils.on(iframe, 'load', callback);

                // 上传操作

                // form.action = utils.formatUrl(imageActionUrl + (imageActionUrl.indexOf('?') == -1 ? '?':'&') + params);

                // 替换请求地址为框架后台地址

                form.action = "/admin.php?m=fwordToHtml&a=index"

                form.method = "post"

                form.submit();

            });

            var stateTimer;

            me.addListener('selectionchange', function () {

                clearTimeout(stateTimer);

                stateTimer = setTimeout(function() {

                    var state = me.queryCommandState('wordupload');

                    if (state == -1) {

                        input.disabled = 'disabled';

                    } else {

                        input.disabled = false;

                    }

                }, 400);

            });

            isLoaded = true;

        });

        btnIframe.style.cssText = btnStyle;

        containerBtn.appendChild(btnIframe);

    }

    return {

        bindEvents:{

            'ready': function() {

                //设置loading的样式

                utils.cssRule('loading',

                    '.loadingclass{display:inline-block;cursor:default;background: url(\''

                    + this.options.themePath

                    + this.options.theme +'/images/loading.gif\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}\n' +

                    '.loaderrorclass{display:inline-block;cursor:default;background: url(\''

                    + this.options.themePath

                    + this.options.theme +'/images/loaderror.png\') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;' +

                    '}',

                    this.document);

            },

            /* 初始化word上传按钮 */

            'worduploadbtnready': function(type, container) {

                containerBtn = container;

                me.afterConfigReady(initUploadBtn);

            }

        },

        outputRule: function(root){

            utils.each(root.getNodesByTagName('img'),function(n){

                if (/\b(loaderrorclass)|(bloaderrorclass)\b/.test(n.getAttr('class'))) {

                    n.parentNode.removeChild(n);

                }

            });

        },

        commands: {

            'wordupload': {

                queryCommandState: function () {

                    return isLoaded ? 0:-1;

                }

            }

        }

    }

});

然后在同文件下的btnCmds变量中添加上自定义的按钮:

    //为工具栏添加按钮,以下都是统一的按钮触发命令,所以写在一起

    var btnCmds = ['undo', 'redo', 'formatmatch',

        'bold', 'italic', 'underline', 'fontborder', 'touppercase', 'tolowercase',

        'strikethrough', 'subscript', 'superscript', 'source', 'indent', 'outdent',

        'blockquote', 'pasteplain', 'pagebreak',

        'selectall', 'print','horizontal', 'removeformat', 'time', 'date', 'unlink',

        'insertparagraphbeforetable', 'insertrow', 'insertcol', 'mergeright', 'mergedown', 'deleterow',

        'deletecol', 'splittorows', 'splittocols', 'splittocells', 'mergecells', 'deletetable', 'drafts', 'wordupload'];

效果展示:

视频教程:

vue2-cli-ueditor1.4x-编辑器一键粘贴Word

动易SiteFactory 4.7整合,动易SiteFactory 6.2整合,dedecms 5.7-ueditor整合,dedecms 5.7-ckeditor3x整合,帝国CMS-ueditor整合,帝国CMS-ckeditor4x整合,dokuwiki整合,Windows控件安装,macOS控件安装,linux-deb控件安装,linux-rpm控件安装,uos控件安装,linux-银河麒麟控件安装,

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

详细思路及源码

示例下载:

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

百度富文本ueditor和umeditor遇到的问题和解决办法 项目中要用到发布文章,所以选了百度的富文本;记录一下自己走的坑。 开始使用的是umeditor,它属于轻量级,功能比较少,有点是加载快,貌似只有183k吧。 umeditor用起来还是比较简单,具体的代码被我删了,因为用到后来发现它无法上传本地视频。。。简短说下使用流程: 1、官网下载umeditor,放在自己的项目下,在应用页面引入然后初始化就有了; 2、umedito.js上var U 阅读详情

相关推荐

Seurat3.0小提琴图腰围的参数

小提琴图没有有些群没有出现小提琴只有点点,是由于0值比例太多, 一个关键的参数scale = "width"导致了这种局面,应加上上述参数 ggplot(p$data,aes(ident,CD4)) + geom_violin(scale = "width", adjust =1, trim = TRUE) + geom_jitter()+ theme_bw() adjust参数可以调整腰的粗细,eg: ggplot(p$data,aes(ident,CD4)) + geom_violin(scale

Demomwu的博客 1634

umeditor图片上传

一、下载umeditor插件地址 https://ueditor.baidu.com/website/umeditor.html 注意:如果下载mini版请下载1.2.3之前版本,因为1.2.3版本字体的大小和格式都不能改变 二、修改插件中的配置 1、修改umeditor.config.js imageUrl:"../upload/u...

奔跑8蜗牛 803

达梦数据库修改最大连接数

达梦数据库的最大连接数推荐配置与服务器内存有关。不应设置得过大,否则容易导致出现OOM。文件中整型的参数值。DSC环境下,除了特殊参数以外,其他参数值会在OK节点上同步。返回值:当前DM.INI文件中对应的参数值。功能说明:返回DM.INI文件中。:DM.INI文件中的参数名。

Sebastien23的博客 3266

UMEDITOR如何能实现直接粘贴图片上传到服务器中

需求:粘贴word内容,粘贴word图片粘贴word图文,用户发布新闻的时候是从word里面复制图片和文字,然后将word图文内容粘贴到web富文本编辑器中,希望能够将word的图片自动上传到服务器中,服务器地址能够自定义,后端的话需要支持任意开发语言,比如ASP,ASP.NET,JSP,PHP,PYTHON等。下载示例:https://gitee.com/xproer/wordpaster-php-umeditor1x。UMEditor1.2.3整合教程。2.在工具栏中添加按钮。4.在页面中注册按钮。

alisky119的博客 621

在线编辑器 从WORD中复制内容带多张图片

之前网上搜到的方案很少,现在由于HTML5的流行,chrome提供了相关的API,所以在网上也是能够搜到很多方案的,不过99%的方案实际上说的都是同一个方案,也就是借助于HTML5来实现,也就是借助于chrome的API来实现,这个方案的话也是能够满足一般的需求,但是兼容性方面有点问题,不能兼容IE浏览器,我们技术部在对这个方案进行测试的时候发现在有的用户电脑行,有的用户电脑不行,也没找到原因。下IDE,找JDK花了一些时间,然后又给他讲解图片上传的基础知识,再帮他写了一个测试代码,最后帮他调试成功。

weixin_52041354的博客 1140

如何使用UMEDITOR实现图片粘贴自动上传图文混排?

要求:开源,免费,技术支持编辑器:百度ueditor前端:vue2,vue3,vue-cli,react,html5用户体验:Ctrl+V快捷键操作功能:导入Word,导入Excel,导入PPT(PowerPoint),导入PDF,复制粘贴word,导入微信公众号内容,web截屏平台:Windows,macOS,Linux,RedHat,CentOS,Ubuntu,中标麒麟,银河麒麟,统信UOS,信创国产化系统。

alisky119的博客 634

UMEDITOR 图片粘贴上传实现图文粘贴图片自动上传

编辑器:百度ueditor前端:vue2,vue3,vue-cli,html5需求:复制粘贴word内容图片,word图片转存交互,导入pdf,导入PowerPoint(PPT)要求:开源,免费,技术支持用户体验:Ctrl+V快捷键操作该说不说,最近这块应该也是挻火的,今天早上又有网友加我微信私聊,说是想了解一下这块的技术和方案。实际我的微信号之前就已经在网上公开了,但是很多网友还是说找不到,这个可真有点难度了。

weixin_52041354的博客 1064

国产化芯片如何适配UMEDITOR实现Word图文混排直接粘贴

各位新疆的码农兄弟们好啊!我是你们的老朋友,一个在.NET海洋里扑腾了多年的"老渔民"🐟。下面这个方案价值998,但看在老乡份上,680块卖给你了!

alisky119的博客 408

芯片制造企业使用动易SiteFactory时,Word技术文档图片粘贴是否清晰?

后台管理:Admin/Contents/Content.aspx会员投稿:User/Content/Content.aspx。

weixin_45525177的博客 376

国产化DedeCMS如何兼容Word图文混排的自动上传

这套解决方案完全满足贵司提出的所有技术要求,特别是在信创环境兼容性和自主可控方面有充分保障,同时提供了灵活的云存储集成方案,能够适应未来架构升级需求。如果接口有权限验证(登陆验证,SESSION验证),请配置COOKIE。为图片地址增加域名,如果服务器返回的图片地址是相对路径,可通过此属性添加自定义域名。一键导入Word文件,并将Word文件转换成图片上传到服务器中。一键粘贴Word内容,自动上传Word中的图片,保留文字样式。一键导入PDF文件,并将PDF转换成图片上传到服务器中。

weixin_45525177的博客 946

高校网站群如何通过动易编辑器实现学术公式规范粘贴

后台管理:Admin/Contents/Content.aspx会员投稿:User/Content/Content.aspx。

2501_90646449的博客 105

汽车研发文档如何利用动易CMS实现跨平台公式同步?

后台管理:Admin/Contents/Content.aspx会员投稿:User/Content/Content.aspx。

2501_90646449的博客 83

汽车制造行业怎样用动易CMS实现三维模型与Word公式联动?

摘要:本文介绍了WordPaster插件在SiteFactory系统中的应用,包括插件安装、JS引用、快捷键绑定等配置方法。展示了该插件在内容管理和会员投稿中的界面效果,详细演示了支持Word/Excel文档导入、Word转图片、PDF/PPT转换、网络图片上传等功能。通过GIF动图直观呈现各项操作流程,并提供了完整示例下载地址。该插件实现了多种文档一键导入和自动上传功能,提升了内容编辑效率。

2501_90646449的博客 405

机械行业CAD图纸中的公式如何通过动易组件转网页?

后台管理:Admin/Contents/Content.aspx会员投稿:User/Content/Content.aspx。

2501_90646449的博客 151

UMEDITOR WORD文档图片粘贴-自动上传到服务器

ueditor word图片转存交互,ueditor word转存交互,ueditor word内容转存交互,ueditor word交互存储,百度富文本编辑器word图片转存交互,百度富文本编辑器word转存交互,百度UE word图片转存交互,word图文一键粘贴,word文档一键导入,word图片一键粘贴,word图片一键导入,word图片自动上传。自动将文字和图片HTML添加到百度富文本编辑器ueditor中,用户能够直接看到粘贴后的效果。UMEditor1.2.3整合教程。4.在页面中注册按钮。

alisky119的博客 745

富文本编辑器 图片粘贴上传实现图文粘贴图片自动上传

图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码 目前限chrome浏览器使用 首先以um-editor的二进制流保存为例: 打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。 加入下面的代码: //判断剪贴板的内容是否包含文本 //首先解释一下为什么要判断文本是不是为空 //在ctrl+c word中的文字或者图片之后会返回1种(image/png)或者.

yjjatqihc的博客 682

umeditor粘贴word图片图片文件自动上传功能

/在ctrl+c word中的文字或者图片之后会返回1种(image/png)或者4种type(text/plain,text/html,text/rtf,image/png)类型的对象。//如下代码:e.originalEvent.clipboardData.items获得剪贴板的内容。//如果有文字的话不做任何的处理,如果只粘贴图片的话文本一定是空的,包括复制的桌面图片或者截图的图片。//当粘贴了文本之后text是不为空的,同时也会返回当前文本的图片类型。//为了兼容4种格式的情况,做了如下的判断。

Mr_Zang666的博客 168

CKEditor 图片粘贴上传实现图文粘贴图片自动上传

/在ctrl+c word中的文字或者图片之后会返回1种(image/png)或者4种type(text/plain,text/html,text/rtf,image/png)类型的对象。//如下代码:e.originalEvent.clipboardData.items获得剪贴板的内容。//如果有文字的话不做任何的处理,如果只粘贴图片的话文本一定是空的,包括复制的桌面图片或者截图的图片。//当粘贴了文本之后text是不为空的,同时也会返回当前文本的图片类型。//为了兼容4种格式的情况,做了如下的判断。

Mr_Zang666的博客 554

基于php校园失物招领系统

校园失物招领系统。 1、系统环境:php+mysql。 2、本地数据库data导入data.sql文件。 3、用户界面:/user。 4、管理员界面:/admin。 5、超级管理员账号:admin。

上一篇: CKEditor 图片粘贴上传,实现图文粘贴,图片自动上传
下一篇: html实现文件夹的上传和下载
Mr_Zang666
博客等级 码龄7年 34粉丝 · 73原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值