解决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 相关文章推荐
JavaScript 函数参数是传值(byVal)还是传址(byRef) 分享
Jul 02 Javascript
javascript封装简单实现方法
Aug 11 Javascript
JS实现可关闭的对联广告效果代码
Sep 14 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
Oct 05 Javascript
javascript 开发之网页兼容各种浏览器
Sep 28 Javascript
用node开发并发布一个cli工具的方法步骤
Jan 03 Javascript
微信小程序rich-text富文本用法实例分析
May 20 Javascript
使用Vue.js中的过滤器实现幂方求值的方法
Aug 27 Javascript
简单了解JS打开url的方法
Feb 21 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
Nov 07 Javascript
微信小程序基础教程之echart的使用
Jun 01 Javascript
JavaScript中MutationObServer监听DOM元素详情
Nov 27 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
php 随机数的产生、页面跳转、件读写、文件重命名、switch语句
2009/08/07 PHP
php session和cookie使用说明
2010/04/07 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
Javascript模块模式分析
2008/05/16 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
Bootstrap零基础入门教程(三)
2016/07/18 Javascript
jQuery实现的图片轮播效果完整示例
2016/09/12 Javascript
Bootstrap企业网站实战项目4
2016/10/14 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
vue实现中部导航栏布局功能
2019/07/30 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
vue-cli4使用全局less文件中的变量配置操作
2020/10/21 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
[00:43]TI7不朽珍藏III——幽鬼不朽展示
2017/07/15 DOTA
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:29:17]RNG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
[59:15]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.20
2020/11/20 DOTA
解决Python中list里的中文输出到html模板里的问题
2018/12/17 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
python实现QQ邮箱发送邮件
2020/03/06 Python
python输出国际象棋棋盘的实例分享
2020/11/26 Python
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
C/C++程序员常见面试题一
2012/12/08 面试题
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
Java如何读取CLOB字段
2013/10/10 面试题
车贷收入证明范本
2014/01/09 职场文书
五年级学生评语
2014/04/22 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
三好生演讲稿
2014/09/12 职场文书
律政俏佳人观后感
2015/06/09 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
MySQL创建管理RANGE分区
2022/04/13 MySQL