1.已经设置好富文本编辑器后,接下来来实现其中的图片上传功能。
第一步,导入相关jar包,在下载的kindeditor文件中,jsp文件夹下,lib文件下的三个jar包复制
粘贴到WEB-INF下的lib目录
第二步,部署相关的servlet,在servlet下新建UploadImageServlet,
我们使用到apache commons fileupload包来实现文件上传
这个包的功能可以在官网上学习,搜索apache commons fileupload。
主页有user guide,点击可以查看实现功能的原理
//创建硬盘存储
DiskFileItemFactory factory = new DiskFileItemFactory();
//设置临时存放路径
ServletContext servletContext = this.getServletConfig().getServletContext();
File repository = (File) servletContext.getAttribute("javax.servlet.context.tempdir");
factory.setRepository(repository);
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
//解析用户的请求
List<FileItem> items = upload.parseRequest(request);
还要规定上传文件大小限制
接下来写代码
try{
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024*10);
factory.setRepository(tmpFile);
ServletFileUpload upload = new ServletFileUpload(factory);
//最大允许上传大小
upload.setFileSizeMax(1024*1024*3);
//可能会上传多个请求,利用item来进行遍历查询
List<FileItem> items = upload.parseRequest(request);
Iterator<FileItem> iter = items.iterator();
String message = "";
while(iter.hasNext()){
FileItem item = iter.next();
String fileName = item.getName();
long fileSize = item.getSize();
if(!item.isFormField()){
//检查文件大小
if(item.getSize()>1024*1024*3){
message = message + "文件" + fileName + "上传超过限制" + upload.getFileSizeMax();
obj.put("error",1);
obj.put("message",message);
}else {
//获取文件的扩展名
String fileExt = fileName.substring(fileName.lastIndexOf(".")+1).toLowerCase();
//文件名重写
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
File uploadedFile = new File(savePath,newFileName);
item.write(uploadedFile);
String url = "/upload/" + newFileName;
obj.put("error",0);
obj.put("url",url);
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
如果出现upload文件夹不存在的情况,可以将web设置为静态资源
图片上传成功