vue3中使用wangEditor上传图片

一、安装wangEditor

wangEditor官网地址:https://www.wangeditor.com/

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

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

二、使用模板

html部分

<template>
    <div style="border: 1px solid #ccc">
      <Toolbar
        style="border-bottom: 1px solid #ccc"
        :editor="editorRef"
        :defaultConfig="toolbarConfig"
        :mode="mode"
      />
      <Editor
        style="height: 500px; overflow-y: hidden;"
        v-model="valueHtml"
        :defaultConfig="editorConfig"
        :mode="mode"
        @onCreated="handleCreated"
      />
    </div>
</template>

js部分

<script>
import '@wangeditor/editor/dist/css/style.css' // 引入 css

import { onBeforeUnmount, ref, shallowRef, onMounted } from 'vue'
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'

export default {
  components: { Editor, Toolbar },
  setup() {
    // 编辑器实例,必须用 shallowRef
    const editorRef = shallowRef()

    // 内容 HTML
    const valueHtml = ref('<p>hello</p>')

    // 模拟 ajax 异步获取内容
    onMounted(() => {
        setTimeout(() => {
            valueHtml.value = '<p>模拟 Ajax 异步设置内容</p>'
        }, 1500)
    })

    const toolbarConfig = {}
    const editorConfig = {
        placeholder: '请输入内容...',
        MENU_CONF: {
           uploadImage: {
              server: '上传地址,例如:http:1.1.1:3000/api/upload',
              headers: { Authorization: 'token' },
              fieldName: 'file',// 这里有个坑,如果返回的响应结果是没有上传文件,跟这里关系很大
              customInsert(res, insertFn) {
                   if (res.code == 200) {
                   let { url, alt, href } = res.data
                   insertFn(baseUrl + url, alt, href)
                   }
              }
            }
         }
    }

    // 组件销毁时,也及时销毁编辑器
    onBeforeUnmount(() => {
        const editor = editorRef.value
        if (editor == null) return
        editor.destroy()
    })

    const handleCreated = (editor) => {
      editorRef.value = editor // 记录 editor 实例,重要!
    }

    return {
      editorRef,
      valueHtml,
      mode: 'default', // 或 'simple'
      toolbarConfig,
      editorConfig,
      handleCreated
    };
  }
}
</script>

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
为了在Vue3使用wangeditor并实现上传图片功能,需要进行以下步骤: 1. 安装wangeditor和axios ```shell npm install wangeditor axios --save ``` 2. 在组件引入wangeditor和axios ```javascript import WangEditor from 'wangeditor' import axios from 'axios' ``` 3. 在组件的mounted钩子函数初始化wangeditor ```javascript mounted() { const editor = new WangEditor('#editor') editor.config.uploadImgServer = '/upload' // 上传图片的接口地址 editor.config.uploadFileName = 'file' // 上传图片的文件名 editor.config.uploadImgHeaders = { // 上传图片时需要携带的请求头 Authorization: 'Bearer ' + localStorage.getItem('token') } editor.config.uploadImgHooks = { // 上传图片的回调函数 customInsert: function (insertImg, result, editor) { if (result.code === 200) { insertImg(result.data.url) } else { alert('上传失败') } } } editor.create() } ``` 4. 在组件添加一个textarea元素,并将其id设置为editor ```html <template> <div> <textarea id="editor"></textarea> </div> </template> ``` 5. 在后端实现上传图片的接口,并将其地址填写到第3步的uploadImgServer属性 ```javascript const express = require('express') const multer = require('multer') const app = express() const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') }, filename: function (req, file, cb) { cb(null, Date.now() + '-' + file.originalname) } }) const upload = multer({ storage: storage }) app.post('/upload', upload.single('file'), (req, res) => { const file = req.file if (!file) { const error = new Error('Please upload a file') error.httpStatusCode = 400 return next(error) } res.send({ code: 200, data: { url: 'http://localhost:3000/' + file.path } }) }) app.listen(3000, () => { console.log('Server started on port 3000') }) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值