解决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 IFrame 强制刷新代码
Jul 23 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
Apr 02 Javascript
jquery SweetAlert插件实现响应式提示框
Aug 18 Javascript
JS加载iFrame出现空白问题的解决办法
May 13 Javascript
jQuery获取select选中的option的value值实现方法
Aug 29 Javascript
Bootstrap CSS布局之表格
Dec 17 Javascript
深究AngularJS之ui-router详解
Jun 13 Javascript
JS解析url查询参数的简单代码
Aug 06 Javascript
vue router 用户登陆功能的实例代码
Apr 24 Javascript
vue 获取及修改store.js里的公共变量实例
Nov 06 Javascript
JS 图片压缩原理与实现方法详解
Apr 29 Javascript
javascript实现简单留言板案例
Feb 09 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
十大“创意”战术!
2020/03/04 星际争霸
ThinkPHP分页类使用详解
2014/03/05 PHP
Laravel 框架基于自带的用户系统实现登录注册及错误处理功能分析
2020/04/14 PHP
javascript 命名规则 变量命名规则
2010/02/25 Javascript
jQuery '行 4954 错误: 不支持该属性或方法' 的问题解决方法
2011/01/19 Javascript
一个CSS+jQuery实现的放大缩小动画效果
2014/02/19 Javascript
Node调试工具JSHint的安装及配置教程
2014/05/27 Javascript
深入解析JavaScript中的数字对象与字符串对象
2015/10/21 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
canvas绘制一个常用的emoji表情
2017/03/30 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
ionic App问题总结系列之ionic点击系统返回键退出App
2017/08/19 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
深入理解javascript中的this
2021/02/08 Javascript
[01:08:57]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第二场
2014/05/24 DOTA
推荐11个实用Python库
2015/01/23 Python
python简单读取大文件的方法
2016/07/01 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
python安装twisted的问题解析
2018/08/21 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
Keras - GPU ID 和显存占用设定步骤
2020/06/22 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
Whistles官网:英国女装品牌
2020/08/14 全球购物
某公司面试题
2012/03/05 面试题
招商业务员岗位职责
2013/12/16 职场文书
三分钟演讲稿事例
2014/03/03 职场文书
班委竞选演讲稿
2014/04/28 职场文书
党员教师批评与自我批评发言稿
2014/10/15 职场文书
2014年调度员工作总结
2014/11/19 职场文书
小学运动会入场词
2015/07/18 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书