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

相关文章
|
2天前
|
JavaScript 前端开发
【vue】iview如何把input输入框和点击输入框之后的边框去掉
【vue】iview如何把input输入框和点击输入框之后的边框去掉
9 0
|
1天前
|
监控 JavaScript
Vue中的数据变化监控与响应——深入理解Watchers
Vue中的数据变化监控与响应——深入理解Watchers
|
2天前
|
JavaScript 安全 前端开发
Vue 项目中的权限管理:让页面也学会说“你无权访问!
Vue 项目中的权限管理:让页面也学会说“你无权访问!
10 3
|
2天前
|
JavaScript 前端开发 开发者
Vue的神奇解锁:冒险的开始
Vue的神奇解锁:冒险的开始
5 1
|
2天前
|
JavaScript
【vue实战】父子组件互相传值
【vue实战】父子组件互相传值
9 1
|
3天前
|
JavaScript
vue2_引入Ant design vue
vue2_引入Ant design vue
8 0
|
3天前
|
JavaScript
vue知识点
vue知识点
13 4
|
3天前
|
存储 JavaScript 前端开发
【Vue】绝了!这生命周期流程真...
【Vue】绝了!这生命周期流程真...
|
3天前
|
JavaScript 索引
【vue】框架搭建
【vue】框架搭建
7 1
|
3天前
|
JavaScript 前端开发 容器
< 每日小技巧: 基于Vue状态的过渡动画 - Transition 和 TransitionGroup>
Vue 的 `Transition` 和 `TransitionGroup` 是用于状态变化过渡和动画的组件。`Transition` 适用于单一元素或组件的进入和离开动画,而 `TransitionGroup` 用于 v-for 列表元素的增删改动画,支持 CSS 过渡和 JS 钩子。
< 每日小技巧: 基于Vue状态的过渡动画 - Transition 和 TransitionGroup>