1. 安装
官网:https://www.wangeditor.com/
vue2安装:npm install @wangeditor/editor-for-vue --save
vue3安装:npm install @wangeditor/editor-for-vue@next --save
2. 使用
2.1. 添加Toolbar标签和Editor标签
<el-form-item> <el-row> <el-col span="24"> <Toolbar style="border-bottom: 1px solid #ccc" :editor="editorRef" :defaultConfig="toolbarConfig" :mode="mode" /> <Editor style="height: 500px;border: 1px solid #ccc" v-model="valueHtml" :defaultConfig="editorConfig" :mode="mode" @onCreated="handleCreated" /> </el-col> </el-row> </el-form-item>
2.2. import
import '@wangeditor/editor/dist/css/style.css' import { onBeforeUnmount , ref , shallowRef , onMounted } from 'vue' import { Editor, Toolbar } from '@wangeditor/editor-for-vue' //Vue3 的 setup 中不能用 this 引用全局变量,需要导入下面的 import { getCurrentInstance } from 'vue';
2.3. 指定组件
components: {Editor,Toolbar},
2.4. setup()方法
setup() { // 编辑器实例,必须用 shallowRef const editorRef = shallowRef() // 内容 HTML const valueHtml = ref('') // 模拟 ajax 异步获取内容 onMounted(() => { /* setTimeout(() => { valueHtml.value = '<p>模拟 Ajax 异步设置内容</p>' }, 1500)*/ }) const toolbarConfig = {} const editorConfig = { placeholder: '请输入内容...' ,MENU_CONF:{}} const baseURL =getCurrentInstance().appContext.config.globalProperties.baseURL console.log("===="+baseURL) //上传图片配置 editorConfig.MENU_CONF['uploadImage'] = { server:baseURL+'manage/uploadPic', // form-data fieldName ,默认值 'wangeditor-uploaded-image' fieldName: 'picFile', // 单个文件的最大体积限制,默认为 2M maxFileSize: 1 * 1024 * 1024, // 1M // 最多可上传几个文件,默认为 100 maxNumberOfFiles: 10, // 选择文件时的类型限制,默认为 ['image/*'] 。如不想限制,则设置为 [] allowedFileTypes: ['image/*'], // 自定义上传参数,例如传递验证的 token 等。参数会被添加到 formData 中,一起上传到服务端。 meta: { //token: window.sessionStorage.getItem('token') }, // 将 meta 拼接到 url 参数中,默认 false metaWithUrl: false, // 自定义增加 http header headers: { Accept: 'application/json', token: window.sessionStorage.getItem('token') }, // 跨域是否传递 cookie ,默认为 false withCredentials: true, // 超时时间,默认为 10 秒 timeout: 5 * 1000, // 5 秒 // 上传之前触发 onBeforeUpload(file) { // file 选中的文件,格式如 { key: file } return file // 可以 return // 1. return file 或者 new 一个 file ,接下来将上传 // 2. return false ,不上传这个 file }, // 上传进度的回调函数 onProgress(progress) { // progress 是 0-100 的数字 console.log('progress', progress) }, // 单个文件上传成功之后 onSuccess(file, res) { console.log(`${file.name} 上传成功`, res) }, // 单个文件上传失败 onFailed(file, res) { console.log(`${file.name} 上传失败`, res) }, // 上传错误,或者触发 timeout 超时 onError(file, err, res) { console.log(`${file.name} 上传出错`, err, res) }, } // 组件销毁时,也及时销毁编辑器 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 }; },
2.5. 后台上传方法
//wangEditor上传成功的返回格式: // //{ // "errno": 0, // 注意:值是数字,不能是字符串 // "data": { // "url": "xxx", // 图片 src ,必须 // "alt": "yyy", // 图片描述文字,非必须 // "href": "zzz" // 图片的链接,非必须 // } //} //上传失败的返回格式: // //{ // "errno": 1, // 只要不等于 0 就行 // "message": "失败信息" //} @PostMapping("/manage/uploadPic") @ResponseBody public JSONObject uploadPic(MultipartFile picFile,HttpServletRequest request){ String fileName=null; if(picFile!=null&& !picFile.isEmpty()){ try { //判断大小和类型 //获得物理路径 //String path = "D:\\uplaodImages"; String path = ResourceUtils.getURL("classpath:").getPath()+"/static/uploadImages/"; String ext = FilenameUtils.getExtension(picFile.getOriginalFilename()); fileName = UUID.randomUUID().toString().replaceAll("-","")+"."+ext; //保存图片 picFile.transferTo(new File(path,fileName)); } catch (IOException e) { e.printStackTrace(); JSONObject jsonObject = new JSONObject(); jsonObject.put("errno",1); jsonObject.put("message","wangEditor上传失败"); return jsonObject; } } JSONObject jsonObject = new JSONObject(); jsonObject.put("errno",0); JSONObject data = new JSONObject(); data.put("url","http://localhost:8080/static/uploadImages/"+fileName); jsonObject.put("data",data); return jsonObject; }
0条评论
点击登录参与评论