Vue中富文本上传图片功能

简介: Vue中富文本上传图片功能

1创建富文本

<template>
            <div style="border: 1px solid #ccc">
              <Toolbar
                style="border-bottom: 1px solid #ccc"
                :editor="editorRef"
                :defaultConfig="toolbarConfig"
                mode="defofault"
              />
              <Editor
                style="height: 500px; overflow-y: hidden"
                v-model="form.eva"
                :defaultConfig="editorConfig"
                mode="default "
                @onCreated="handleCreated"
              />
            </div>
</template>
import '@wangeditor/editor/dist/css/style.css'; // 引入 css
import { onBeforeUnmount, shallowRef, onMounted } from 'vue';
import { Editor, Toolbar } from '@wangeditor/editor-for-vue';

2配置富文本‘

const imUr = ref('');
// 编辑器实例,必须用 shallowRef
const editorRef = shallowRef();
// 内容 HTML
const valueHtml = ref();
//功能区
const toolbarConfig = {};
const editorConfig = {
  placeholder: '请输入内容...',
}
// 组件销毁时,也及时销毁编辑器
onBeforeUnmount(() => {
  const editor = editorRef.value;
  if (editor == null) return;
  editor.destroy();
});
const handleCreated = (editor) => {
  editorRef.value = editor; // 记录 editor 实例,重要!
};

3.添加自定义上传

//在editorConfig 添加
const editorConfig = {
  placeholder: '请输入内容...',
   MENU_CONF: {
    uploadImage: {
      async customUpload(file, insertFn) {
        console.log(file);
        const forms = new FormData();
        forms.append("参数", file); // 获取上传图片信息
        //  请求接口
        axios
          .post("上传接口", forms, {
            headers: {
              "content-type": "multipart/form-data",
            },
          })
          .then((res) => {
            console.log(res);
            imUr.value = res.data.front_file
            if (res.data.status == 200) {
              console.log(res);
            }
            // file 即选中的文件
            // 自己实现上传,并得到图片 url alt href
            // 最后插入图片
            insertFn( 'http//'+imUr.value , alt, href)
          });
      },
    }
  },
}

注意:打开和关闭表单时可能会出现富文本销毁失效报错

解决:在富文本中添加v-if,在打开或关闭表单事件中添加相应状态

<div style="border: 1px solid #ccc" v-if="text">
              <Toolbar
                style="border-bottom: 1px solid #ccc"
                :editor="editorRef"
                :defaultConfig="toolbarConfig"
                mode="defofault"
              />
              <Editor
                style="height: 500px; overflow-y: hidden"
                v-model="form.eva"
                :defaultConfig="editorConfig"
                mode="default "
                @onCreated="handleCreated"
              />
            </div>
const text=ref()

3

相关文章
|
21天前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
21天前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
20 1
|
21天前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
27 1
|
21天前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
21天前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
23天前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
24天前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
27 1
vue学习第一章
|
24天前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
24 1
vue学习第三章
|
24天前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
35 1
vue学习第四章
|
24天前
|
JavaScript 前端开发 算法
vue学习第7章(循环)
欢迎来到瑞雨溪的博客,一名热爱JavaScript和Vue的大一学生。本文介绍了Vue中的v-for指令,包括遍历数组和对象、使用key以及数组的响应式方法等内容,并附有综合练习实例。关注我,将持续更新更多优质文章!🎉🎉🎉
23 1
vue学习第7章(循环)