摘要:
今天开发中用到了KingEditor富文本编辑器,一款功能比较齐全的编辑器,纯jQuery + CSS写成,使用起来比较方便。其中图片上传功能个人很喜欢(因为之前用百度的富文本编辑器没有实现,可能是以前太菜了哈哈),现在记录下来方便以后查看。
版权声明:
本文作者:怡宝的大方哥
作者博客地址:
KindEditor下载:.php 官网上有对应的demo,感兴趣的可以自行查看。
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ".dtd">
<html><head><meta charset="utf-8" /><title>MultiImageDialog Examples</title><link rel="stylesheet" href="js/kindeditor-4.1.10/themes/default/default.css" /><script src="js/kindeditor-4.1.10/kindeditor.js"></script><script src="js/kindeditor-4.1.10/lang/zh_CN.js"></script><script&ady(function(K) {var editor = K.editor({filePostName : "uploadFile",//服务端接收图片的属性名uploadJson : '/uploadImage',//服务端路径allowFileManager : true});K('#J_selectImage').click(function() {editor.loadPlugin('multiimage', function() {editor.plugin.multiImageDialog({clickFn : function(urlList) {var div = K('#J_imageView');div.html('');K.each(urlList, function(i, data) {div.append('<img src="' + data.url + '">');});editor.hideDialog();}});});});});</script></head><body><input type="button" id="J_selectImage" value="批量上传" /><div id="J_imageView"></div></body>
</html>
前端页面是从官网上的Demo,其中修改了默认的图片上传路径和上传文件名:
var editor = K.editor({filePostName : "uploadFile",//服务端接收图片的属性名uploadJson : '/uploadImage',//服务端路径allowFileManager : true
});
修改完成后运行页面可以看到:页面只有一个按钮,点开后可以选择图片,选择完图片后点击上传按钮,控制台会有一个404的错误,因为我们后端程序还没写。另外KindEditor多图上传底层使用的是ajax异步请求,每张图片对应一个ajax请求。
首先看一下KingEditor规定的图片回显的json格式:
//成功时
{"error" : 0,"url" : ".ext"
}
//失败时
{"error" : 1,"message" : "错误信息"
}
参数说明:
因此先创建一个VO实体类用于封装返回对象 ,只封装了error和url:
package com.upload.vo;public class KindImage {private Integer error = 0; //1表示文件上传失败,0表示成功private String url; //路径地址,虚拟的网络空间地址public Integer getError() {return error;}public void setError(Integer error) { = error;}public String getUrl() {return url;}public void setUrl(String url) {this.url = url;}}
接下来创建UploadController类用于处理文件上传及回显,这里只是一个demo,就没有用到service和mapper层。
图片上传和回显大致流程:
直接上代码:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
SimpleDateFormat;
import java.util.Date;
import java.util.UUID;import javax.imageio.ImageIO;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;import com.jt.vo.KindImage;@Controller
public class UploadController {@RequestMapping("/uploadImage")@ResponseBodypublic KindImage uploadFile(MultipartFile uploadFile) {//创建一个KindImage对象KindImage kingImage = new KindImage();//获取源文件名并转换为字母小写String realName = OriginalFilename().toLowerCase();//1. 正则表达式判断文件名if (!realName.matches("^.+\.(jpg|png|gif)$")) {kingImage.setError(1);return kingImage;//不是正确的图片后缀名,返回错误}//2. 获取图片的宽度和高度,用于判断是否为真实的图片文件try {BufferedImage bufferredImage = InputStream());//获取图片的宽和高int height = Height();int width = Width();if (height == 0 || width == 0) {kingImage.setError(1);return kingImage;//不是真实的图片文件,返回错误}} catch (IOException e1) {e1.printStackTrace();kingImage.setError(1);//图片读取出错,返回错误}//3. 将图片分目录存储(以时间格式:yyyy/MM/dd)String dateDir = new SimpleDateFormat("yyyy/MM/dd").format(new Date());//获取当前年月日//String localFileDir = "D:/upload_demo/image/";//本地路径String localFileDir = "D:/demo/upload-demo/src/main/webapp/image/";//本地路径String imagePath = localFileDir + dateDir;//拼接路径File file = new File(imagePath);if (!ists()) file.mkdirs();//若文件路径不存在,创建文件夹(包括父级文件夹)//4.重新生成图片名字String uuid = UUID.randomUUID()//获取String()//转换成字符串格式.replace("-", "");//去掉其中的“-”String FileName = uuid + realName.substring(realName.lastIndexOf("."));//拼接后缀名File filePath = new File(imagePath + "/" + FileName);//拼接路径//5.上传图片try {ansferTo(filePath);//上传图片kingImage.setUrl("image/" + dateDir + "/" + FileName);//图片上传成功,设置回显路径System.out.println("文件上传成功!!!!");} catch (Exception e) {e.printStackTrace();kingImage.setError(1);//图片上传失败,返回错误信息}return kingImage;}
}
重新启动服务器,选择图片上传,现在可以看到图片上传成功并成功回显:
查看本地目录可以看到,图片已经存在,并且图片名改变了:
网页上也可以看到回显的图片:
至此,基于SpringBoot和KindEditor的图片上传及回显功能基本实现。
本文发布于:2024-02-02 13:28:52,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170685173344115.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |