Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 1190|回复: 0

[默认分类] vue-quill-editor上传内容由于图片是base64的导致字符太长的问题解决

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2020-8-5 17:22:20 | 显示全部楼层 |阅读模式
    vue-quill-editor是个较为轻量级富文本框,相较于ueditor,开发更编辑,更加直观,如果大家伙在需求允许的情况下,还是会比较建议使用vue-quill-editor
    vue-quill-editor的使用方法在这边就不多说了,大家网上查下,一抓一大把
    但是在使用vue-quill-editor有一个致命的问题,vue-quill-editor默认插入图片是直接将图片转为base64再放入内容中,如果图片比较大的话,富文本的内容就会很大,即使图片不大,只要图片较为多,篇幅较长,富文本的内容也是异常的大的,
    这就会给大家带来一些烦恼,我们可能更希望在提交富文本的内容的时候图片只是以图片地址提交,那这样一来我们要怎么去处理呢,接下来大家可以来理一理
    还是老思路,既然我们可以希望不是直接将图片转成base64,那么我们可以采用选择完图片,即将图片上传服务器,服务器返回相应的图片链接,前端将图片链接插入到富文本的指定光标上即可,这样一来就可以实现我们的想要的效果了
    首先,新建富文本组件QuillEditor.vue,利用iview的上传组件来上传选择完的图片(当然,其他的上传组件也是ok的)

    1. 1     <Upload
    2. 2         id="iviewUp"
    3. 3           ref="upload"
    4. 4           :show-upload-list="false"
    5. 5           :on-success="handleSingleSuccess"
    6. 6           :format="["jpg","jpeg","png"]"
    7. 7           :max-size="2048"
    8. 8           :headers="header"
    9. 9           :on-format-error="handleFormatError"
    10. 10           :before-upload="handleBeforeUpload()"
    11. 11           type="drag"
    12. 12           :action="serverUrl"
    13. 13           style="display: none;width:0">
    14. 14           <div style="width: 0">
    15. 15               <Icon type="ios-camera" size="50"></Icon>
    16. 16           </div>
    17. 17       </Upload>
    18. 18       <!--<Row>-->
    19. 19         <quill-editor
    20. 20           v-model="detailContent"
    21. 21           ref="myQuillEditor"
    22. 22           :options="editorOption"
    23. 23           @blur="onEditorBlur($event)" @focus="onEditorFocus($event)"
    24. 24           @change="onEditorChange($event)">
    25. 25         </quill-editor>
    26. 26       <!--</Row>-->
    复制代码


    看到上面的代码有的的就会有疑问了,那上传好的图片要怎么插到富文本的指定光标里面呢,别慌,面包会有的,往下看,

    1. 1     handleSingleSuccess (res, file) {
    2. 2       // res为图片服务器返回的数据
    3. 3       // 获取富文本组件实例
    4. 4       let vm = this
    5. 5       let quill = this.$refs.myQuillEditor.quill
    6. 6       console.log("res---", vm.$refs.myQuillEditor.quill.getSelection())
    7. 7       // 如果上传成功
    8. 8       if (res.res_code === "1") {
    9. 9           // 获取光标所在位置
    10. 10           let length = quill.getSelection().index;
    11. 11           // 插入图片  res.info为服务器返回的图片地址
    12. 12           quill.insertEmbed(length, "image", res.result.url)
    13. 13           // 调整光标到最后
    14. 14           quill.setSelection(length + 1)
    15. 15       } else {
    16. 16           vm.$Message.error("图片插入失败")
    17. 17       }
    18. 18       // loading动画消失
    19. 19       this.quillUpdateImg = false
    20. 20     }
    复制代码


    通过 this.$refs.myQuillEditor.quill.getSelection().index获取光标所在位置,将图片地址放在该位置即可
    这样一来万事俱备,只欠东风了,这个时候大家会发现,那iview这个上传组件在页面上呢,我怎么实现点击富文本上的上传图片的按钮调用iview的上传组件的方法呢,
    这个时候我们就要用到富文本中的配置属性editorOption,对editorOption进行图片上传的点击事件进行相应的配置即可,详情看下面代码

    1.     editorOption: { // 富文本框配置
    2.           placeholder: "",
    3.           theme: "snow",  // or "bubble"
    4.           modules: {
    5.               toolbar: {
    6.                   container: toolbarOptions,  // 工具栏
    7.                   handlers: {
    8.                       "image": function (value) {
    复制代码

       
    1. if (value) {
    2.                               document.querySelector("#iviewUp input").click()
    3.                           } else {
    4.                               this.quill.format("image", false);
    5.                           }
    6.                       }
    7.                   }
    8.               }
    9.           }
    10.       }
    复制代码

    1. document.querySelector("#iviewUp input") 这个就是相应的dom节点的点击事件,将其绑在富文本的图片按钮点击事件上
    2. 好了,基本上大功告成。还是算比较简单的,希望可以供大家参考
    复制代码

      
      
    [code][/code]
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-4-30 22:08 , Processed in 0.403758 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表