Vue 组件代码
npm i @wangeditor/editor-for-vue
<template><div style="border: 1px solid #ccc;height:600px;"><Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" :mode="mode" /><Editor style="height: 500px; overflow-y: hidden;" v-model="editorValueHtml" :defaultConfig="editorConfig":mode="mode" @onCreated="handleCreated" /></div>
</template><script setup lang="ts">
import { ref, Ref, onMounted, onBeforeUnmount, shallowRef, reactive } from 'vue'
import '@wangeditor/editor/dist/css/style.css'
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
const editorRef = shallowRef()const mode: Ref = ref('default')
const editorValueHtml = ref('<p>hello</p>')
const toolbarConfig = {}
const editorConfig: any = {MENU_CONF: {}
}editorConfig.placeholder = '请输入内容...'
editorConfig.MENU_CONF['uploadImage'] = {server: '上传图片接口',timeout: 5 * 1000, fieldName: 'image',metaWithUrl: false, headers: { Accept: 'text/x-json' },allowedFileTypes: ['image/*'],maxFileSize: 5 * 1024 * 1024, base64LimitSize: 5 * 1024, onBeforeUpload(file: any) {console.log('onBeforeUpload', file)return file },onProgress(progress: any) {console.log('onProgress', progress)},onSuccess(file: any, res: any) {console.log('onSuccess', file, res)},onFailed(file: any, res: any) {alert(res.message)console.log('onFailed', file, res)},onError(file: any, err: any, res: any) {alert(err.message)console.error('onError', file, err, res)},
}onMounted(() => {setTimeout(() => {editorValueHtml.value = '<p>模拟 Ajax 异步设置内容</p>'}, 1500)
})
onBeforeUnmount(() => {const editor = editorRef.valueif (editor == null) returneditor.destroy()
})
const handleCreated = (editor: any) => {editorRef.value = editor
}
</script>
thinkphp上传图片接口
<?php
declare (strict_types = 1);namespace app\api\controller;use think\facade\Request;
use think\Validate;class Upload
{public function uploadImage(){$file = Request::file('image');if ($file) {$validate = new Validate(['ext' => 'jpg,png,gif,jpeg',]);$fileName = $file->getOriginalName();$ext = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));if (!$validate->check(['ext' => $ext])) {return json(['errno' => 1, 'message' => '文件格式不正确']);}$saveDir = './uploads/'; if (!is_dir($saveDir)) {mkdir($saveDir, 0777, true);}$uniqueFileName = uniqid() . '-' . $fileName;$savePath = $saveDir . $uniqueFileName;if ($file->move($saveDir, $uniqueFileName)) {$url = Request::domain() . '/uploads/' . $uniqueFileName;return json(['errno' => 0, 'data' => ['url' => $url]]);} else {return json(['errno' => 1, 'message' => $file->getError()]);}} else {return json(['errno' => 1, 'message' => '没有上传文件']);}}
}