HTML编辑器如何能实现直接粘贴把图片上传到服务器中

图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码
目前限chrome浏览器使用
首先以um-editor的二进制流保存为例:
打开umeditor.js,找到UM.plugins['autoupload'],然后找到autoUploadHandler方法,注释掉其中的代码。
加入下面的代码:

//判断剪贴板的内容是否包含文本

//首先解释一下为什么要判断文本是不是为空

//在ctrl+c word中的文字或者图片之后会返回1种(image/png)或者4种type(text/plain,text/html,text/rtf,image/png)类型的对象

//为了兼容4种格式的情况,做了如下的判断

//如下代码:e.originalEvent.clipboardData.items获得剪贴板的内容

//当粘贴了文本之后text是不为空的,同时也会返回当前文本的图片类型

//如果有文字的话不做任何的处理,如果只粘贴图片的话文本一定是空的,包括复制的桌面图片或者截图的图片

var text = e.originalEvent.clipboardData.getData("text");

if(text == ""){

    var items=e.originalEvent.clipboardData.items;

     for (var i = 0, len = items.length; i < len; i++) {

        var item = items[i];

       if ( item.kind == 'file' && item.type.indexOf('image/') !== -1 ) {

         

              var blob = item.getAsFile();

              getBase64(blob, function( base64 ) {

              //sendAndInsertImage(base64,me); 上传到服务器

               setBase64Image(base64,me);

              });

              //阻止默认事件, 避免重复添加;

              e.originalEvent.preventDefault();

             };

        }

}

两个方法:

//执行插入图片的操作

function setBase64Image(base64,editor){

    editor.execCommand('insertimage', {src: base64,_src: base64});

}

//获得base64

function  getBase64(blob, callback) {

    var a = new FileReader();

    a.onload = function(e) {callback(e.target.result);};

    a.readAsDataURL(blob);

};

效果展示:


详细内容可参考这篇文章

 

 

视频演示:

Word一键粘贴(导入)插件-Word图文一键粘贴功能演示

 

详细思路及源码

示例下载:

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
传统的flash上传方式已被很多主流浏览器所抛弃,HTML5上传是大势所趋。 本插件的功能界面与DZ自带的flash上传界面几乎完全相同,电脑版和手机触屏版均支持多图上传(实测手机端部分浏览器因不支持文件多选,故无法实现多图上传,包括但不限于手机UC浏览器)。 功能介绍 1、支持HTML5图片附件上传 电脑版插件开启后系统自动使用HTML5上传,若浏览器不支持HTML5上传则自动改用Flash上传,同时支持门户、论坛、群组、相册、日志、广播。 2、支持图片压缩上传 图片一般都会占服务器的大部分空间,所以对图片进行压缩很重要,插件后台可开启图片压缩上传功能(指定论坛版块可自由关闭),图片压缩后便可节省服务器空间。 3、支持粘贴截图上传 在电脑端发布门户文章和论坛帖子时,用户可以直接通过粘贴截屏图片进行上传,更方便快速。 4、支持拖曳图片附件上传 在电脑端发布门户文章和论坛帖子时,用户可以直接将图片或者附件进行拖曳上传,后台可选择多种拖曳风格显示。 5、支持图片自动本地化 在电脑端发布门户文章和论坛帖子时,支持粘贴文章时使文章内图片自动本地化(需开启php_curl)。 6、支持图片批量插入 在电脑端发布门户文章和论坛帖子时,用户可以直接对上传的图片进行批量插入,也可以逆序进行批量插入。 7、支持图片防一句话木马 可开启防木马图片,插件会对上传后的疑似木马图片自动进行重绘保存,以防止图片木马且不影响用户体验。 8、支持微信图片上传 手机触屏版默认使用HTML5上传,后台可开启微信上传功能,开启后在微信内自动使用微信上传功能。 9、支持手机端图片点击插入 手机触屏版图片上传后,用户可以直接点击图片将它插入贴内。 10、支持二维码传图 可直接用手机扫描电脑版上传框的二维码,将图片上传直接显示在电脑版上传图片列表。 11、支持大附件上传 电脑端支持大附件分片上传(请保证服务器有足够的空间存储) 12、突破DZ文件后缀限制 可自定义增加上传文件的后缀名,使上传的文件保持原来的后缀名,而不是变为attach后缀名 13、图片附件显示排序 可对论坛帖子未插入的图片附件按指定排序进行显示 使用注意 使用微信上传功能必须需要认证公众号【已认证的订阅号或已认证的服务号】且域名需备案 1、登录微信公众号--公众号设置--功能设置--JS接口安全域名--设置即可 2、微信公众号--安全心--IP白名单-设置即可 3、微信公众号--基本配置--获取开发者ID(AppID)和开发者密码(AppSecret) 4、将AppID和AppSecret填入插件后台设置
实现粘贴图片上传,你可以使用HTMLJavaScript来。下面是一个简单的示例代码: HTML部分: ```html <div id="drop-area"> <div class="drop-message">将图片拖到此处或点击选择图片</div> </div> ``` CSS部分: ```css #drop-area { width: 300px; height: 200px; border: 2px dashed #ccc; text-align: center; padding: 40px; margin: 20px auto; } .drop-message { font-size: 18px; color: #999; } #drop-area.dragover { border-color: #000; } ``` JavaScript部分: ```javascript // 获取相关的元素 var dropArea = document.getElementById('drop-area'); // 阻止默认的拖拽事件 ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(eventName => { dropArea.addEventListener(eventName, preventDefaults, false); }); function preventDefaults(e) { e.preventDefault(); e.stopPropagation(); } // 添加拖拽样式 ['dragenter', 'dragover'].forEach(eventName => { dropArea.addEventListener(eventName, highlight, false); }); ['dragleave', 'drop'].forEach(eventName => { dropArea.addEventListener(eventName, unhighlight, false); }); function highlight(e) { dropArea.classList.add('dragover'); } function unhighlight(e) { dropArea.classList.remove('dragover'); } // 处理粘贴事件 document.addEventListener('paste', handlePaste, false); function handlePaste(e) { var items = e.clipboardData.items; for (var i = 0; i < items.length; i++) { if (items[i].type.indexOf('image') !== -1) { var file = items[i].getAsFile(); uploadFile(file); } } } // 处理文件上传 dropArea.addEventListener('drop', handleDrop, false); function handleDrop(e) { var files = e.dataTransfer.files; handleFiles(files); } function handleFiles(files) { for (var i = 0; i < files.length; i++) { uploadFile(files[i]); } } function uploadFile(file) { var formData = new FormData(); formData.append('file', file); // 在这里执行上传文件的逻辑,例如使用Ajax发送formData到服务器 // 这里只是一个简单的示例,你需要根据实际情况进行修改 var xhr = new XMLHttpRequest(); xhr.open('POST', '/upload', true); xhr.onload = function() { if (xhr.status === 200) { console.log('文件上传成功!'); } else { console.error('文件上传失败!'); } }; xhr.send(formData); } ``` 以上代码实现了一个简单的粘贴图片上传功能。当用户将图片拖拽到指定区域时,或者通过粘贴方式插入图片时,会触发对应的事件处理函数。你可以根据实际需求进行修改和扩展。请注意,粘贴图片上传功能在某些浏览器可能不被支持或受到限制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值