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.value
if (editor == null) return
editor.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' => '没有上传文件']);
}
}
}