wangEditor v5

wangEditor v5 是国内一名优良的开发者开发的富文本编辑器,是一款十分好用的编辑器
官网:wangEditor v5

vue2-cli 应用wangEditor v5

vue-cli装置应用请跳官网:vue-cli

装置:

yarn add @wangeditor/editor# 或者 npm install @wangeditor/editor --saveyarn add @wangeditor/editor-for-vue# 或者 npm install @wangeditor/editor-for-vue --save

应用

模板
<template>    <div style="border: 1px solid #ccc;">        <Toolbar            style="border-bottom: 1px solid #ccc"            :editor="editor"            :defaultConfig="toolbarConfig"            :mode="mode"        />        <Editor            style="height: 500px; overflow-y: hidden;"            v-model="html"            :defaultConfig="editorConfig"            :mode="mode"            @onCreated="onCreated"        />    </div></template>
script
<script>import { Editor, Toolbar } from '@wangeditor/editor-for-vue'export default {    components: { Editor, Toolbar },    data() {        return {            editor: null,            html: '<p>hello</p>',            toolbarConfig: { },            editorConfig: { placeholder: '请输出内容...' },            mode: 'default', // or 'simple'        }    },    methods: {        onCreated(editor) {            this.editor = Object.seal(editor) // 肯定要用 Object.seal() ,否则会报错        },    },    mounted() {        // 模仿 ajax 申请,异步渲染编辑器        setTimeout(() => {            this.html = '<p>模仿 Ajax 异步设置内容 HTML</p>'        }, 1500)    },    beforeDestroy() {        const editor = this.editor        if (editor == null) return        editor.destroy() // 组件销毁时,及时销毁编辑器    }}</script>
css
<style src="@wangeditor/editor/dist/css/style.css"></style>

到这就能够失常应用了,接下来教大家怎么上传图片和视频

上传图片与视频

咱们先看一下文档对于上传图片和视频的阐明
上传图片和视频配置必须在uploadImage里进行配置

editorConfig.MENU_CONF['uploadImage'] = {    // 上传图片的配置}

间接给大家看我怎么配置的,间接在data里的editorConfig.MENU_CONF进行配置

   editorConfig: {        placeholder: '请输出内容...',        // autoFocus: false,        // 所有的菜单配置,都要在 MENU_CONF 属性下        MENU_CONF: {          // 图片上传          uploadImage: {            server: '/api/blade-resource/fileSystem/fileUpload',            fieldName: 'file',            // 单个文件的最大体积限度,默认为 2M            maxFileSize: 10 * 1024 * 1024, // 10M            // 最多可上传几个文件,默认为 100            maxNumberOfFiles: 10,            // 抉择文件时的类型限度,默认为 ['image/*'] 。如不想限度,则设置为 []            allowedFileTypes: ['image/*'],            // 自定义上传参数,例如传递验证的 token 等。参数会被增加到 formData 中,一起上传到服务端。            meta: {              // token: 'xxx',              // otherKey: 'yyy'              // file:''            },            // 将 meta 拼接到 url 参数中,默认 false            metaWithUrl: false,            // 自定义减少 http  header            headers: {              // Accept: 'text/x-json',              // otherKey: 'xxx'            },            // 跨域是否传递 cookie ,默认为 false            withCredentials: true,            // 超时工夫,默认为 10 秒            timeout: 10 * 1000, //10 秒            // 上传前            onBeforeUpload(files) {              Message({                message: '图片正在上传中,请急躁期待',                duration: 0,                customClass: 'uploadTip',                iconClass: 'el-icon-loading',                showClose: true              });              return files;            },            // 自定义插入图片            customInsert(res, insertFn) {              // 因为自定义插入导致onSuccess与onFailed回调函数不起作用,本人手动解决              // 先敞开期待的Message              Message.closeAll();              if (res.code === 200) {                Message.success({                  message: `${res.data.originalName} 上传胜利`                });              } else {                Message.error({                  message: `${res.data.originalName} 上传失败,请从新尝试`                });              }              insertFn(res.data.link, res.data.name, res.data.link);            },            // 单个文件上传胜利之后            onSuccess(file, res) {              console.log(`${file.name} 上传胜利`, res);            },            // 单个文件上传失败            onFailed(file, res) {              console.log(`${file.name} 上传失败`, res);            },            // 上传进度的回调函数            onProgress(progress) {              console.log('progress', progress);              // progress 是 0-100 的数字            },            // 上传谬误,或者触发 timeout 超时            onError(file, err, res) {              console.log(`${file.name} 上传出错`, err, res);            }          },          // 视频上传          uploadVideo: {            fieldName: 'file',            server: '/api/blade-resource/fileSystem/fileUpload',            // 单个文件的最大体积限度,默认为 10M            maxFileSize: 50 * 1024 * 1024, // 50M            // 最多可上传几个文件,默认为 5            maxNumberOfFiles: 3,            // 抉择文件时的类型限度,默认为 ['video/*'] 。如不想限度,则设置为 []            allowedFileTypes: ['video/*'],            // 自定义上传参数,例如传递验证的 token 等。参数会被增加到 formData 中,一起上传到服务端。            meta: {              // token: 'xxx',              // otherKey: 'yyy'            },            // 将 meta 拼接到 url 参数中,默认 false            metaWithUrl: false,            // 自定义减少 http  header            headers: {              // Accept: 'text/x-json',              // otherKey: 'xxx'            },            // 跨域是否传递 cookie ,默认为 false            withCredentials: true,            // 超时工夫,默认为 30 秒            timeout: 1000 * 1000, // 1000 秒,            // 上传之前触发            onBeforeUpload(file) {              Message({                message: '视频正在上传中,请急躁期待',                duration: 0,                customClass: 'uploadTip',                iconClass: 'el-icon-loading',                showClose: true              });              return file;            },            // 自定义插入视频            customInsert(res, insertFn) {              // 因为自定义插入导致onSuccess与onFailed回调函数不起作用,本人手动解决              // 先敞开期待的Message              Message.closeAll();              if (res.code === 200) {                Message.success({                  message: `${res.data.originalName} 上传胜利`                });              } else {                Message.error({                  message: `${res.data.originalName} 上传失败,请从新尝试`                });              }              insertFn(res.data.link, res.data.link);            },            // 上传进度的回调函数            onProgress(progress) {              console.log(progress);              // onProgress(progress) {       // JS 语法              // progress 是 0-100 的数字            },            // // 单个文件上传胜利之后            // onSuccess(file, res) {            //   console.log(`${file.name} 上传胜利`, res);            //   this.successMsg(file);            // },            // // 单个文件上传失败            // onFailed(file, res) {            //   console.log(`${file.name} 上传失败`, res);            //   this.errorMsg(file);            // },            // 上传谬误,或者触发 timeout 超时            onError(file, err, res) {              console.log(`${file.name} 上传出错`, err, res);              Notification.error({                title: '谬误',                message: `${file.name} 上传失败,请从新尝试`              });            }          }        }      },

其中最要害的一步就是自定义插入,官网文档形容:

也就是说如果后端返回来的格局与富文本要求的格局无奈统一,能够应用自定义插入来插入图片和视频,因为这里有一个小问题,应用自定义插入会导致onSuccess与onFailed回调函数不起作用,我便本人在customInsert进行解决,这个问题我曾经反馈给作者,置信很快解决,各位小伙伴应用自定义插入的时候能够先看看回调函数是否起作用,如果有,能够把下面customInsert外面对于回调的解决去掉

后果

上传本地图片

复制网络照片间接粘贴编辑器里

上传本地视频