解决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 相关文章推荐
超酷的网页音乐播放器DewPlayer使用方法
Dec 18 Javascript
js二维数组定义和初始化的三种方法总结
Mar 03 Javascript
浅析JS中document对象的一些重要属性
Mar 06 Javascript
node.js中的fs.fchmod方法使用说明
Dec 16 Javascript
Javascript对象Clone实例分析
Jun 09 Javascript
require.js的用法详解
Oct 20 Javascript
纯js模仿windows系统日历
Feb 04 Javascript
JavaScript实现简单的文本逐字打印效果示例
Apr 12 Javascript
antd组件Upload实现自己上传的实现示例
Dec 18 Javascript
vue中template的三种写法示例
Oct 21 Javascript
多个Vue项目部署到服务器的步骤记录
Oct 22 Javascript
vue二选一tab栏切换新做法实现
Jan 19 Vue.js
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集成FCK的函数代码
2008/09/27 PHP
中英文字符串翻转函数
2008/12/09 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
详解使用php-cs-fixer格式化代码
2020/09/16 PHP
jQuery父级以及同级元素查找介绍
2013/09/04 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
微信小程序实现带刻度尺滑块功能
2017/03/29 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
AngularJS 中的数据源的循环输出
2017/10/12 Javascript
解决vue select当前value没有更新到vue对象属性的问题
2018/08/30 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
在Node.js下运用MQTT协议实现即时通讯及离线推送的方法
2019/01/24 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
[04:05]TI9战队采访 - Natus Vincere
2019/08/22 DOTA
Python运行的17个时新手常见错误小结
2012/08/07 Python
Windows下搭建python开发环境详细步骤
2020/07/20 Python
详解Python中open()函数指定文件打开方式的用法
2016/06/04 Python
python中Apriori算法实现讲解
2017/12/10 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
selenium python 实现基本自动化测试的示例代码
2019/02/25 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
python 线程的五个状态
2020/09/22 Python
意大利和国际最佳时尚品牌:Drestige
2019/12/28 全球购物
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
校三好学生主要事迹
2014/01/11 职场文书
经典安踏广告词
2014/03/21 职场文书
室内设计专业自荐信
2014/05/31 职场文书
业绩倒数第一的检讨书
2014/09/24 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
婚礼答谢礼品
2015/01/20 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书
导游词之塘栖古镇
2019/12/04 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python
Python可视化学习之seaborn调色盘
2022/02/24 Python
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle