Uniapp + 富文本编辑器UEditorPlus 上传文件

公司一个项目需要用到富文本编辑器功能,在开源社区找到一个不错的工具: UEditorPlus。功能挺全面的,很适合开发。

准备工作

引入npm包

npm i vue-ueditor-wrap

下载

到项目Gitee仓库下载dist文件

gitee仓库

拷贝

在前端的static目录下新建文件夹UEditorPlus(可自定义,但需与下文静态资源根路径路径保持一致),把dist目录下的文件拷贝到该文件夹下

拷贝

注册

在项目main.js文件中添加全局组件


import VueUeditorWrap from 'vue-ueditor-wrap';
Vue.component('vue-ueditor-wrap', VueUeditorWrap);

引用

在需要用到的页面引用组件


<template>
  <div class="content">
    <vue-ueditor-wrap v-model="content" editor-id="editor" :config="editorConfig" :editorDependencies="['ueditor.config.js','ueditor.all.js']" style="height:500px;" />
  </div>
</template>
<script>
export default {
  data() {
    return {
      content: '',
	  //可以在此处配置,也可以到ueditor.config.js文件中配置
      editorConfig: {
        // 编辑器后端服务接口,参考后端规范 https://open-doc.modstart.com/ueditor-plus/backend.html
        serverUrl: '/user/config', //初始化及上传文件皆使用此接口
        // 配置 UEditorPlus 的静态资源根路径,此处路径需要和你拷贝的路径一直,否则会报错
        UEDITOR_HOME_URL: '/static/UEditorPlus',
        UEDITOR_CORS_URL: '/static/UEditorPlus',
        //设置富文本编辑器高度,默认为320
        initialFrameHeight: 500,
         // 插入图片设置
        imageConfig: {
          // 是否禁止本地上传
          disableUpload: false,
          // 是否禁止在线管理,若用不到可设为true
          disableOnline: false,
          // 自定义选择按钮
          selectCallback: null
        }
      }
    }
  }
}
</script>

1、serverUrl、UEDITOR_HOME_URL、UEDITOR_CORS_URL三者必须配置

2、UEditorPlus 编辑器在引用时调用serverUrl接口进行配置初始化,所以我们需要针对此接口返回配置信息

3、即使不初始化也可以使用,但是无法进行上传。所以用不到上传功能的可以忽略下文

初始化配置

我们仅需初始化我们用到的配置即可,如果仅用到上传图片,只需填写图片相关配置:配置文档


@Data
public class ConfigPo {

    //执行上传图片的action名称 默认值:uploadimage 必填
    private String imageActionName = "image";

    // 提交的图片表单名称,默认值:upfile
    private String imageFieldName = "file";

    // 上传大小限制,单位B,默认值:2048000
    private Integer imageMaxSize = 10485760;

    // 允许上传的图片格式 
    private String[] imageAllowFiles = {".jpg", ".png", ".jpeg"};

    // 图片访问路径前缀,默认值:空 必填
    private String imageUrlPrefix = "http://localhost:8080/";
    
}
	import cn.hutool.json.JSONUtil;  

	/**
     * 初始化配置 初始化以GET请求方式发送
     */
    @GetMapping("/config")
    public String getConfig() {
        //返回一个json格式字符串
        return JSONUtil.toJsonStr(new ConfigPo());
    }

在这里插入图片描述

上传图片

点击按钮

在这里插入图片描述

后端接受上传文件

    @PostMapping("/config")
    public EditResponse upload(@RequestParam("file") MultipartFile file, @RequestParam("action") String action) {
		// 根据action的值判断是哪种文件上传,具体逻辑请自行实现
        return JSONUtil.toJsonStr(EditResponse.builder()
                .state("success")
                .url("upload/" + file.getOriginalFilename())
                .original(file.getOriginalFilename()).build());//只能返回json对象或json字符串,不能返回bean
    }
@Data
@Builder
public class EditResponse {

    //状态值 成功只能返回SUCCESS(必须大写),否则填写失败原因
    private String state;

    //上传路径
    private String url; //要想在编辑器中正确展示图片,请确保 imageUrlPrefix + url路径可以访问到图片资源

    //标题,可不填
    private String title;

    //上传文件原始名称 绑定在img标签的alt属性中
    private String original;
}

在这里插入图片描述

此时富文本绑定的值为:<p><img src="http://localhost:8080/upload/demo.png" alt="demo.png"/></p

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值