解决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 模拟雅虎首页的点击对话框效果
Apr 11 Javascript
jQuery源码解读之addClass()方法分析
Feb 20 Javascript
AngularJS手动表单验证
Feb 01 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
May 23 Javascript
Knockoutjs 学习系列(一)ko初体验
Jun 07 Javascript
浅谈js图片前端预览之filereader和window.URL.createObjectURL
Jun 30 Javascript
Javascript日期格式化format函数的使用方法
Aug 30 Javascript
vue使用watch 观察路由变化,重新获取内容
Mar 08 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
Jul 11 Javascript
vue实现单选和多选功能
Aug 11 Javascript
基于JavaScript实现幸运抽奖页面
Jul 05 Javascript
详解React 元素渲染
Jul 07 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
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
destoon文章模块调用企业会员资料的方法
2014/08/22 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
javascript 数组排序函数
2009/08/20 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
JavaScript中最简洁的编码html字符串的方法
2014/10/11 Javascript
director.js实现前端路由使用实例
2015/02/03 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
React 使用browserHistory项目访问404问题解决
2018/06/01 Javascript
p5.js绘制创意自画像
2019/11/04 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
微信小程序实现时间戳格式转换
2020/07/20 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
线程和进程的区别及Python代码实例
2015/02/04 Python
Python脚本实现12306火车票查询系统
2016/09/30 Python
python实现学生管理系统
2018/01/11 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
Python正则表达式和元字符详解
2018/11/29 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
python实现的Iou与Giou代码
2020/01/18 Python
PHP如何与mysql建立链接
2013/05/05 面试题
配件采购员岗位职责
2013/12/03 职场文书
安全口号大全
2014/06/21 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
第28个世界无烟日活动总结
2015/02/10 职场文书
学校食堂管理制度
2015/08/04 职场文书
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
2021/04/13 Python
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android