Spring Boot实现VueQuill富文本编辑器上传图片到服务器
概述
VueQuill富文本编辑器添加图片时,会将图片转换为base64格式
如果直接将编辑器的内容传到后端并保存到MySQL数据库时(我习惯使用text
类型),很容易就超出text
类型的长度,即使还有比text类型长度更长的类型,但是还是不推荐直接将base64格式的图片保存到MySQL中
所以有必要实现VueQuill富文本编辑器添加图片时,先将图片上传到服务器中,然后后端返回图片的链接给编辑器引用,编辑器要上传到图片到后端需要安装插件quill-image-uploader
实现过程
安装插件
1 | npm install quill-image-uploader --save |
引入
1 | import ImageUploader from 'quill-image-uploader'; |
安装插件到编辑器
首先定义模块,只需要修改请求后端的url,下面代码的url经过getServerUrl的封装最终是localhost:8080/goods/vueQuillUploadImage
,getServerUrl的代码查看博客:Vue 项目实现统一管理请求的后端 IP 地址和端口 | LeDao’s Blog (zoutl.cn),也可以直接写出url不用封装
1 | const modules = { |
使用编辑器的代码如下,关键代码是:modules="modules"
1 | <QuillEditor |
Java后端代码
首先引入依赖,用于文件的操作
1 | <!-- https://mvnrepository.com/artifact/commons-io/commons-io --> |
业务代码如下,当前Controller的名称上面的注解是@RestController
和@RequestMapping("/goods")
,所以前端请求的路径是/goods/vueQuillUploadImage
,和上面的url对应
DateUtil.getCurrentDateStr2()
和System.currentTimeMillis()
是根据时间生成字符串,生成的图片名称示例为202212172148271671284907136.jpg
,只是用来命名而已,代码不贴了,自己去改掉
goodsDetailsImageFilePath
是定义在application.yml
配置文件的路径,配置为goodsDetailsImageFilePath: E://data/mall/images/goods/details/
关于返回的url,要加上http://
,不然VueQuill富文本编辑器会出错
1 | /** |
修改可上传文件的大小
Spring Boot默认可上传的最大文件大小是1MB,可以去application.yml
配置文件修改,配置如下:
1 | spring: |
PS.
官网地址为:Modules | VueQuill (vueup.github.io),只有前端代码,后端代码需要自己实现,前端根据后端返回的数据拿到url就行了,不规定格式
参考代码GitHub仓库链接:a6678696/vue-quill-demo