vue 下 使用 vue-quill-editor 富文本上传不使用base64上传,该用file上传

安装依赖

npm install vue-quill-editor –save

我这里写了个 子组件 ,方便以后调用

在这里插入图片描述
组件内容为:

<template>
 <div>
  <el-upload      
   v-show="false"
   id="quill-upload"
   :action="serverUrl"
   name="image"
   multiple
   :limit="3"
   list-type="picture"
   height="500"
   :show-file-list="false"
   :before-upload="beforeUpload"
   :on-error="uploadError"
   :on-success="handleExceed">
   <el-button size="small" type="primary" ></el-button>
   <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
  </el-upload>
  <el-row v-loading="uillUpdateImg">
   <quillEditor
    ref="myQuillEditor"
    @change="onEditorChange($event)"
    v-model="value"
    :options="editorOption"/>
  </el-row>
 </div>
</template>
<script>
import { quillEditor } from 'vue-quill-editor'//引用扩展
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
export default {
 name: "richText",
 components:{quillEditor},
 props:['content'],//父组件传过来的,将传过来的渲染到富文本编辑器
 data(){
  return{
   serverUrl:process.env.VUE_APP_BASE_API + '/upload', //上传的图片服务器地址
   uillUpdateImg:false,//根据图片上传状态来确定是否显示loading动画
   value:this.content,//富文本内容
   editorOption: {//符文本编辑器的配置
    placeholder: '',
    theme: 'snow',
    modules: {
     toolbar: {
      container: [// 工具栏配置, 默认是全部
       ['bold'],
       ['italic'],
       ['underline'],
       ['strike'],
       [{'list':'ordered'},{'list': 'bullet' }],
    //    ['blockquote'], ['code-block'],//不需要的可以干掉
       ['link'],
       ['image'],
       [{'list': 'ordered'}, {'list': 'bullet'}],
      ],
      handlers: {
       'image': function (value) {
        if (value) {
         // 给个点击触发Element-ui,input框选择图片文件
         document.querySelector('#quill-upload input').click()
        } else {
         this.quill.format('image', false);
        }
       }
      }
     }
    }
   }
  }
 },
 methods:{
  onEditorChange({ quill, html, text }) {   //富文本编辑器内容发生改变的时候
   this.value = html
   this.$emit('textChange',html)//将富文本编辑器输入的文本发送给父组件,父组件涉及提交添加或者更改
  },
  beforeUpload(){               //上传图片之前开启loading
   this.uillUpdateImg = true
  },
  uploadError(){               //图片上传失败,关闭loading
   this.uillUpdateImg = false
   this.$message.error('图片插入失败')
  },
  handleExceed(response, file, fileList){   //图片添加成功
   let quill = this.$refs.myQuillEditor.quill
   console.log(response)
   if (response.code === 0) {
    let length = quill.getSelection().index;
    // 插入图片 response.data.url为服务器返回的图片地址
    quill.insertEmbed(length, 'image', response.data.file_url)//image 是你请求接口传的key,
    // 调整光标到最后
    quill.setSelection(length + 1)
   }else{
    this.$message.error('图片插入失败')
   }
   this.fileList = fileList
   this.uillUpdateImg = false
  },
 }
}
</script>
<style>
.quillEditor{
   width: 50%;
   height: 700px;
}
</style>

父组件调用实现
在这里插入图片描述

引用子组件
import editor from '@/components/Zeditor/Quilleditor' //通用版富文本,上传是 file 非 base64

在这里插入图片描述

//获取子组件 上传后的回调地址
 getMsgFormSon(data){
   this.form.content = data         
 },

在这里插入图片描述

富文本 我这里 内容是在 form 对象内的 content
            <el-form-item label="正文">                
              <!-- 图片上传组件辅助-->
              <editor :content="content" v-model="form.content" @textChange="getMsgFormSon"></editor>  
            </el-form-item>

这样就实现了,富文本base64上传 事件被 vue-upload file 劫持掉喽 ,富文本上传图片后,图片显示到文本中。


上传成功后,点击编辑 招牌呢回现问题
在这里插入图片描述
在这里插入图片描述
将回现的数据付给这个值就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值