vue中使用quill-image-extend-module实现在富文本vue-quill-editor中实现图片先上传到服务器,再将上传路径放在富文本中...

在使用vue-quill-editor富文本的时候,对于图片的处理经常是将图片转换成base64,再上传数据库,但是base64不好存储。

原理:首先将图片上传服务器,再将图片插入到富文本中,同时光标后移一位。(其实就是将富文本中的图片上传改成了自己写上传)

1,安装插件

import { quillEditor, Quill } from 'vue-quill-editor'
import { container, ImageExtend, QuillWatch } from 'quill-image-extend-module'
Quill.register('modules/ImageExtend', ImageExtend)

2.布局:

<quill-editor
      @change="onEditorBlur($event)"
      id="desc"
      ref="quill"
      v-model="desc"
      :options="editorOption"
    ></quill-editor>
     <input type="file" @change="change" id="upload" style="display:none;" />

3:,options的值,放在vue存放数据的data中

editorOption: {
        placeholder: '此处输入赛事规程',
        modules: {
          ImageExtend: {
            loading: true,
            name: 'img',
            action: UploadImage,//上传的服务器地址
            response: res => {
              return res.data
            }
          },
          toolbar: {
            container: container,
            handlers: {
              image: function(value) {
                if (value) {
                  document.querySelector('#upload').click()----------------#upload即为自己写的上传,可以使用最简单的input
                } else {
                  this.quill.format('image', false)
                }
              }
            }
          }
        }
      },

4,上传(我们后端上传使用的FormData,只有最后得到地即可)

  change(e) {
      let file = e.target.files[0]
      const formData = new FormData()
      formData.append('file', file)
------下面可以根据后端写的上传接口进行传递参数 UploadImage(formData) .then(res => { let quill = this.$refs.quill.quill------------$ref中得到quill后再往下找quill,否则查找光标位置会报错。 if (res.code === 0) { const formdata = _.extend({}, this.formdata) let length = quill.getSelection().index//光标位置 // 插入图片 图片地址 quill.insertEmbed(length, 'image', res.data) // 调整光标到最后 quill.setSelection(length + 1)//光标后移一位 } }) .catch(err => { console.error(err) }) }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值