赞
踩
wangEditor的导入图片和视频的详细配置,官网上面有配置很详细。自己简单在项目中使用了一下,总结一下。
wangEditorhttps://www.wangeditor.com/
wangEditor 5版本
vue2 + vuecli脚手架
element-plus组件库(我使用的是vue+element-plus版本,个人觉得ui更好一点)
下面直接在data中进行配置就可以了,下面的就是上传视频和图片的配置方式,由于接口是我自己写的,所以server的地址是本地的。
- data() {
- return {
- editorConfig: {
- placeholder: '请输入内容...',
- // autoFocus: false,
- // 所有的菜单配置,都要在 MENU_CONF 属性下
- MENU_CONF: {
- // 图片上传
- uploadImage: {
- server: 'http://127.0.0.1/upload/up',
- 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: {
- Authorization:getToken()
- // Accept: 'text/x-json',
- // otherKey: 'xxx'
- },
- withCredentials: false,// 跨域是否传递 cookie ,默认为 false
- timeout: 10 * 1000, // 超时时间,默认为 10 秒
- // 上传前
- onBeforeUpload(files) {
- ElMessage({
- message: '图片正在上传中,请耐心等待',
- duration: 0,
- customClass: 'uploadTip',
- iconClass: 'el-icon-loading',
- showClose: true
- });
- return files;
- },
- // 自定义插入图片
- customInsert(res, insertFn) {
- // 因为自定义插入导致onSuccess与onFailed回调函数不起作用,自己手动处理
- // 先关闭等待的Message
- ElMessage.closeAll();
- if (res.code === 1) {
- ElMessage.success({
- message: `${res.data.name} 上传成功`
- });
- } else {
- ElMessage.error({
- message: `${res.data.name} 上传失败,请重新尝试`
- });
- }
- insertFn(res.data.path, res.data.name, res.data.path);
- },
- // 单个文件上传成功之后
- 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: 'http://127.0.0.1/upload/up',
- // 单个文件的最大体积限制,默认为 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: {
- Authorization:getToken()
- // Accept: 'text/x-json',
- // otherKey: 'xxx'
- },
- // 跨域是否传递 cookie ,默认为 false
- withCredentials: false,
- // 超时时间,默认为 30 秒
- timeout: 1000 * 1000, // 1000 秒,
- // 上传之前触发
- onBeforeUpload(file) {
- ElMessage({
- message: '视频正在上传中,请耐心等待',
- duration: 0,
- customClass: 'uploadTip',
- iconClass: 'el-icon-loading',
- showClose: true
- });
- return file;
- },
- // 自定义插入视频
- customInsert(res, insertFn) {
- // 因为自定义插入导致onSuccess与onFailed回调函数不起作用,自己手动处理
- // 先关闭等待的Message
- ElMessage.closeAll();
- if (res.code === 1) {
- ElMessage.success({
- message: `${res.data.name} 上传成功`
- });
- } else {
- ElMessage.error({
- message: `${res.data.name} 上传失败,请重新尝试`
- });
- }
- insertFn(res.data.path, res.data.path);
- },
- // 上传进度的回调函数
- 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} 上传失败,请重新尝试`
- });
- }
- }
- }
- },
- }
- },
- <template>
- <div>
- <el-button type="primary" @click="goBack" class="top_back">返回</el-button>
- <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="CreateContent" />
- </div>
- <div class="onsumbit">
- <el-button type="primary" @click="onSumbit">提交内容</el-button>
- </div>
- </div>
- </template>
-
- <script>
- import '@wangeditor/editor/dist/css/style.css' // 引入 css
- import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
- import { ElMessage } from 'element-plus'
- import { getToken } from '@/utils/common/common'
- import { ArticleDetailApi, ArticleEditApi } from '../../api/index'
- export default {
- name: "WangContent",
- components: { Editor, Toolbar },
- data() {
- return {
- editor: null,
- html: '',
- toolbarConfig: {},
- editorConfig: { placeholder: '请输入内容...' },
- mode: 'default', // or 'simple'
- upload:"http://127.0.0.1:80" + "/upload/up",
- editorConfig: {
- placeholder: '请输入内容...',
- // autoFocus: false,
- // 所有的菜单配置,都要在 MENU_CONF 属性下
- MENU_CONF: {
- // 图片上传
- uploadImage: {
- server: 'http://127.0.0.1/upload/up',
- 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: {
- Authorization:getToken()
- // Accept: 'text/x-json',
- // otherKey: 'xxx'
- },
- withCredentials: false,// 跨域是否传递 cookie ,默认为 false
- timeout: 10 * 1000, // 超时时间,默认为 10 秒
- // 上传前
- onBeforeUpload(files) {
- ElMessage({
- message: '图片正在上传中,请耐心等待',
- duration: 0,
- customClass: 'uploadTip',
- iconClass: 'el-icon-loading',
- showClose: true
- });
- return files;
- },
- // 自定义插入图片
- customInsert(res, insertFn) {
- // 因为自定义插入导致onSuccess与onFailed回调函数不起作用,自己手动处理
- // 先关闭等待的Message
- ElMessage.closeAll();
- if (res.code === 1) {
- ElMessage.success({
- message: `${res.data.name} 上传成功`
- });
- } else {
- ElMessage.error({
- message: `${res.data.name} 上传失败,请重新尝试`
- });
- }
- insertFn(res.data.path, res.data.name, res.data.path);
- },
- // 单个文件上传成功之后
- 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: 'http://127.0.0.1/upload/up',
- // 单个文件的最大体积限制,默认为 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: {
- Authorization:getToken()
- // Accept: 'text/x-json',
- // otherKey: 'xxx'
- },
- // 跨域是否传递 cookie ,默认为 false
- withCredentials: false,
- // 超时时间,默认为 30 秒
- timeout: 1000 * 1000, // 1000 秒,
- // 上传之前触发
- onBeforeUpload(file) {
- ElMessage({
- message: '视频正在上传中,请耐心等待',
- duration: 0,
- customClass: 'uploadTip',
- iconClass: 'el-icon-loading',
- showClose: true
- });
- return file;
- },
- // 自定义插入视频
- customInsert(res, insertFn) {
- // 因为自定义插入导致onSuccess与onFailed回调函数不起作用,自己手动处理
- // 先关闭等待的Message
- ElMessage.closeAll();
- if (res.code === 1) {
- ElMessage.success({
- message: `${res.data.name} 上传成功`
- });
- } else {
- ElMessage.error({
- message: `${res.data.name} 上传失败,请重新尝试`
- });
- }
- insertFn(res.data.path, res.data.path);
- },
- // 上传进度的回调函数
- 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} 上传失败,请重新尝试`
- });
- }
- }
- }
- },
- }
- },
- methods: {
- CreateContent(editor) {
- this.editor = Object.seal(editor) // 一定要用 Object.seal() ,否则会报错
- },
- goBack() {
- this.$router.go(-1)
- },
- getDetailArticle() {
- ArticleDetailApi(this.$route.query.id).then(res => {
- console.log(res, '文章的详情');
- if (res.data.code == 1) {
- this.html = res.data.data.content
- } else {
- this.$message.error(res.msg)
- }
- })
- },
- onSumbit() {
- console.log(123456);
- ArticleEditApi({
- id: this.$route.query.id,
- content: this.html
- }).then(res => {
- console.log(123456);
- if (res.data.code == 1) {
- this.$message({
- type: "success",
- message: res.data.msg,
- duration: 1500,
- onClose: () => {
- this.goBack()
- },
- });
- } else {
- this.$message({
- type: "error",
- message: res.data.msg,
- onClose: () => {
- this.goBack()
- },
- });
- }
- })
- }
- },
- mounted() {
- // 模拟 ajax 请求,异步渲染编辑器
- this.getDetailArticle()
- },
- beforeDestroy() {
- const editor = this.editor
- if (editor == null) return
- editor.destroy() // 组件销毁时,及时销毁编辑器
- },
-
- }
- </script>
-
- <style lang="scss" scoped>
- .top_back {
- margin-bottom: 20px
- }
-
- .onsumbit {
- display: flex;
- justify-content: center;
- align-items: center;
- margin-top: 40px
- }
- </style>
希望可以帮助到大家啦,上面的方式亲测有效!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。