解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题


Posted in Javascript onAugust 20, 2018

vue-quill-editor是个较为轻量级富文本框,相较于ueditor,开发更编辑,更加直观,如果大家伙在需求允许的情况下,还是会比较建议使用vue-quill-editor。

vue-quill-editor的使用方法在这边就不多说了,大家网上查下,一抓一大把

但是在使用vue-quill-editor有一个致命的问题,vue-quill-editor默认插入图片是直接将图片转为base64再放入内容中,如果图片比较大的话,富文本的内容就会很大,即使图片不大,只要图片较为多,篇幅较长,富文本的内容也是异常的大的,这就会给大家带来一些烦恼,我们可能更希望在提交富文本的内容的时候图片只是以图片地址提交,那这样一来我们要怎么去处理呢,接下来大家可以来理一理

还是老思路,既然我们可以希望不是直接将图片转成base64,那么我们可以采用选择完图片,即将图片上传服务器,服务器返回相应的图片链接,前端将图片链接插入到富文本的指定光标上即可,这样一来就可以实现我们的想要的效果了

首先,新建富文本组件QuillEditor.vue,利用iview的上传组件来上传选择完的图片(当然,其他的上传组件也是ok的)

<Upload
    id="iviewUp"
     ref="upload"
     :show-upload-list="false"
     :on-success="handleSingleSuccess"
     :format="['jpg','jpeg','png']"
     :max-size="2048"
     :headers="header"
     :on-format-error="handleFormatError"
     :before-upload="handleBeforeUpload()"
     type="drag"
     :action="serverUrl"
     style="display: none;width:0">
     <div style="width: 0">
       <Icon type="ios-camera" size="50"></Icon>
     </div>
   </Upload>
   <!--<Row>-->
    <quill-editor 
     v-model="detailContent" 
     ref="myQuillEditor" 
     :options="editorOption" 
     @blur="onEditorBlur($event)" @focus="onEditorFocus($event)"
     @change="onEditorChange($event)">
    </quill-editor>
   <!--</Row>-->

看到上面的代码有的的就会有疑问了,那上传好的图片要怎么插到富文本的指定光标里面呢,别慌,面包会有的,往下看,

handleSingleSuccess (res, file) {
   // res为图片服务器返回的数据
   // 获取富文本组件实例
   let vm = this
   let quill = this.$refs.myQuillEditor.quill
   console.log('res---', vm.$refs.myQuillEditor.quill.getSelection())
   // 如果上传成功
   if (res.res_code === '1') {
     // 获取光标所在位置
     let length = quill.getSelection().index;
     // 插入图片 res.info为服务器返回的图片地址
     quill.insertEmbed(length, 'image', res.result.url)
     // 调整光标到最后
     quill.setSelection(length + 1)
   } else {
     vm.$Message.error('图片插入失败')
   }
   // loading动画消失
   this.quillUpdateImg = false
  }

通过 this.$refs.myQuillEditor.quill.getSelection().index获取光标所在位置,将图片地址放在该位置即可

这样一来万事俱备,只欠东风了,这个时候大家会发现,那iview这个上传组件在页面上呢,我怎么实现点击富文本上的上传图片的按钮调用iview的上传组件的方法呢,

这个时候我们就要用到富文本中的配置属性editorOption,对editorOption进行图片上传的点击事件进行相应的配置即可,详情看下面代码

editorOption: { // 富文本框配置
     placeholder: '',
     theme: 'snow', // or 'bubble'
     modules: {
       toolbar: {
         container: toolbarOptions, // 工具栏
         handlers: {
           'image': function (value) {
 

if (value) {
               document.querySelector('#iviewUp input').click()
             } else {
               this.quill.format('image', false);
             }
           }
         }
       }
     }
   }

 document.querySelector('#iviewUp input') 这个就是相应的dom节点的点击事件,将其绑在富文本的图片按钮点击事件上好了,基本上大功告成。还是算比较简单的,希望可以供大家参考

总结

以上所述是小编给大家介绍的解决vue-quill-editor上传内容由于图片是base64的导致字符太长的问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js精度溢出解决方案
Dec 02 Javascript
用jquery实现点击栏目背景色改变
Dec 10 Javascript
JavaScript中prototype为对象添加属性的误区介绍
Oct 15 Javascript
JavaScript中的操作符类型转换示例总结
May 30 Javascript
详解Node.Js如何处理post数据
Sep 19 Javascript
jquery拼接ajax 的json和字符串拼接的方法
Mar 11 Javascript
基于JavaScript实现简单的音频播放功能
Jan 07 Javascript
jQuery 操作 HTML 元素和属性的方法
Nov 12 jQuery
nvm、nrm、npm 安装和使用详解(小结)
Jan 17 Javascript
JavaScript中构造函数与原型链之间的关系详解
Feb 25 Javascript
Angular 多级路由实现登录页面跳转(小白教程)
Nov 19 Javascript
深入解析微信小程序开发中遇到的几个小问题
Jul 11 Javascript
Vue2.0生命周期的理解
Aug 20 #Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
Aug 20 #Javascript
RequireJS用法简单示例
Aug 20 #Javascript
JavaScript实现多态和继承的封装操作示例
Aug 20 #Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
Aug 20 #Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
Aug 20 #Javascript
微信小程序 MinUI组件库系列之badge徽章组件示例
Aug 20 #Javascript
You might like
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
jquery keypress,keyup,onpropertychange键盘事件
2010/06/25 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
Bootstrap媒体对象学习使用
2017/03/07 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
基于jQuery中ajax的相关方法汇总(必看篇)
2017/11/08 jQuery
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
.netcore+vue 实现压缩文件下载功能
2020/09/24 Javascript
[03:49]2016完美“圣”典风云人物:AMS专访
2016/12/06 DOTA
Python中的choice()方法使用详解
2015/05/15 Python
python中私有函数调用方法解密
2016/04/29 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
2018/12/05 Python
Python Django框架单元测试之文件上传测试示例
2019/05/17 Python
tensorflow 实现打印pb模型的所有节点
2020/01/23 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
python实现快递价格查询系统
2020/03/03 Python
浅谈cv2.imread()和keras.preprocessing中的image.load_img()区别
2020/06/12 Python
matplotlib图例legend语法及设置的方法
2020/07/28 Python
python实现人工蜂群算法
2020/09/18 Python
Ticketmaster德国票务网站:购买音乐会和体育等门票
2016/11/14 全球购物
英国最大的笔记本电脑直销专家:Laptops Direct
2019/07/20 全球购物
介绍一下XMLHttpRequest对象的常用方法和属性
2013/05/24 面试题
最新结婚典礼主持词
2014/03/14 职场文书
个人委托书范本
2014/04/02 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
单位病假条范文
2015/08/17 职场文书
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫