解决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 相关文章推荐
jquery遍历input取得input的name
Apr 27 Javascript
通过判断JavaScript的版本实现执行不同的代码
May 11 Javascript
JavaScript中伪协议 javascript:使用探讨
Jul 18 Javascript
jquery得到iframe src属性值的方法
Sep 25 Javascript
JS实现3D图片旋转展示效果代码
Sep 22 Javascript
JavaScript 对象深入学习总结(经典)
Sep 29 Javascript
js实现获取两个日期之间所有日期的方法
Jun 17 Javascript
canvas实现简易的圆环进度条效果
Feb 28 Javascript
详解使用React制作一个模态框
Mar 14 Javascript
vue实现图片预览组件封装与使用
Jul 13 Javascript
微信小程序学习总结(五)常见问题实例小结
Jun 04 Javascript
vue中路由跳转不计入history的操作
Sep 21 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
基于simple_html_dom的使用小结
2013/07/01 PHP
使用CodeIgniter的类库做图片上传
2014/06/12 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
php 自定义函数实现将数据 以excel 表格形式导出示例
2019/11/13 PHP
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
HTML Color Picker(js拾色器效果)
2013/08/27 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
js中new一个对象的过程
2017/02/20 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
一文让你彻底搞清楚javascript中的require、import与export
2017/09/24 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
微信小程序template模板实例详解
2017/10/27 Javascript
jquery+css3实现熊猫tv导航代码分享
2018/02/12 jQuery
基于vue-cli vue-router搭建底部导航栏移动前端项目
2018/02/28 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
jquery html添加元素/删除元素操作实例详解
2020/05/20 jQuery
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
Python中的异常处理简明介绍
2015/04/13 Python
python引用DLL文件的方法
2015/05/11 Python
Python数据类型详解(四)字典:dict
2016/05/12 Python
Python实现优先级队列结构的方法详解
2016/06/02 Python
详解K-means算法在Python中的实现
2017/12/05 Python
简单了解Python生成器是什么
2019/07/02 Python
anaconda如何查看并管理python环境
2019/07/05 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
2020/03/12 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
平面设计自荐信
2013/10/07 职场文书
环保专项行动方案
2014/05/12 职场文书
2014年学校国庆主题活动方案
2014/09/16 职场文书
2014年体育部工作总结
2014/11/13 职场文书
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android