SpringBoot之KindEditor文件上传
发布时间:2020-12-15 07:13:50 所属栏目:Java 来源:网络整理
导读:后端核心代码如下: package com.blog.springboot.controller;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.PrintWriter;import java.text.SimpleDateFormat;import java.util.ArrayList;import
后端核心代码如下: package com.blog.springboot.controller; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload; import org.springframework.stereotype.Controller; import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import com.alibaba.fastjson.JSONObject; @Controller public class KindController { @RequestMapping(value = "/Kindeditor/uploadFile",method = RequestMethod.POST) void uploadFile(HttpServletRequest request,HttpServletResponse response) throws Exception { PrintWriter writer = response.getWriter(); // 文件保存目录路径 String savePath = request.getSession().getServletContext().getRealPath(/") + upload/image" + File.separatorChar + File.separatorChar; String saveUrl = request.getContextPath() + File.separatorChar + " + File.separatorChar + File.separatorChar; 定义允许上传的文件扩展名 HashMap<String,String> extMap = new HashMap<String,String>(); extMap.put(imagegif,jpg,jpeg,png,bmp"); 最大文件大小 long maxSize = 1000000; response.setContentType(text/html; charset=UTF-8if (!ServletFileUpload.isMultipartContent(request)) { writer.println(getError(请选择文件。)); return; } File uploadDir = new File(savePath); 判断文件夹是否存在,如果不存在则创建文件夹 uploadDir.exists()) { uploadDir.mkdirs(); } 检查目录写权限 uploadDir.canWrite()) { writer.println(getError(上传目录没有写权限。; } String dirName = request.getParameter(dir); if (dirName == null) { dirName = ; } extMap.containsKey(dirName)) { writer.println(getError(目录名不正确。; } MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request; Map<String,MultipartFile> fileMap = mRequest.getFileMap(); String fileName = ; for (Iterator<Map.Entry<String,MultipartFile>> it = fileMap.entrySet().iterator(); it.hasNext();) { Map.Entry<String,MultipartFile> entry = it.next(); MultipartFile mFile = entry.getValue(); fileName = mFile.getOriginalFilename(); 检查文件大小 if (mFile.getSize() > maxSize) { writer.println(getError(上传文件大小超过限制。)); ; } String fileExt = fileName.substring(fileName.lastIndexOf(.1); if (!Arrays.<String>asList(extMap.get(dirName).split(,)).contains(fileExt)) { writer.println(getError(上传文件扩展名是不允许的扩展名。n只允许" + extMap.get(dirName) + 格式。; } UUID uuid = UUID.randomUUID(); String path = savePath + uuid.toString() + fileExt; saveUrl = saveUrl + uuid.toString() + fileExt; BufferedOutputStream outputStream = new BufferedOutputStream( FileOutputStream(path)); FileCopyUtils.copy(mFile.getInputStream(),outputStream); JSONObject obj = JSONObject(); obj.put(error0); obj.put(urlprivate String getError(String message) { JSONObject obj = JSONObject(); obj.put(); obj.put(message obj.toString(); } @RequestMapping(value = /Kindeditor/fileManager RequestMethod.GET) fileManager(HttpServletRequest request,HttpServletResponse response) throws Exception { 根目录路径,可以指定绝对路径,比如 /var/www/attached/ String rootPath = request.getSession().getServletContext().getRealPath(upload/ 根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/ String rootUrl = request.getContextPath() + /upload/ 图片扩展名 String[] fileTypes = new String[] { gifjpgjpegpngbmp }; System.out.println(rootPath); String dirName = request.getParameter(if (dirName != ) { if (!Arrays.<String>asList(flashmediafile }).contains(dirName)) { System.out.println(Invalid Directory name.); ; } rootPath += dirName + ; rootUrl += dirName + ; File saveDirFile = File(rootPath); saveDirFile.exists()) { saveDirFile.mkdirs(); } } 根据path参数,设置各路径和URL String path = request.getParameter(path") != null ? request.getParameter(") : ""; String currentPath = rootPath + path; String currentUrl = rootUrl + path; String currentDirPath = path; String moveupDirPath = if (!.equals(path)) { String str = currentDirPath.substring(0,currentDirPath.length() - ); moveupDirPath = str.lastIndexOf(") >= 0 ? str.substring(1) : ; } 排序形式,name or size or type String order = request.getParameter(order").toLowerCase() : name; 不允许使用..移动到上一级目录 if (path.indexOf(..) { System.Access is not allowed. 最后一个字符不是/ "".equals(path) && !path.endsWith()) { System.Parameter is not valid. 目录不存在或不是目录 File currentPathFile = File(currentPath); currentPathFile.isDirectory()) { System.Directory does not exist. 遍历目录取的文件信息 List<Hashtable> fileList = new ArrayList<Hashtable>(); if (currentPathFile.listFiles() != for (File file : currentPathFile.listFiles()) { Hashtable<String,Object> hash = new Hashtable<String,Object>(); String fileName = file.getName(); if (file.isDirectory()) { hash.put(is_dirtrue); hash.put(has_file)); hash.put(filesize0Lis_photofalsefiletype); } else (file.isFile()) { String fileExt = fileName.substring(fileName.lastIndexOf().toLowerCase(); hash.put(asList(fileTypes).contains(fileExt)); hash.put(filenamedatetimenew SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(file.lastModified())); fileList.add(hash); } } if (size.equals(order)) { Collections.sort(fileList, SizeComparator()); } type TypeComparator()); } else { Collections.sort(fileList,1)"> NameComparator()); } JSONObject result = JSONObject(); result.put(moveup_dir_pathcurrent_dir_pathcurrent_urltotal_countfile_listapplication/json; charset=UTF-8); System..println(result.toJSONString()); PrintWriter writer = response.getWriter(); writer.println(result); } NameComparator implements Comparator { int compare(Object a,Object b) { Hashtable hashA = (Hashtable) a; Hashtable hashB = (Hashtable) b; if (((Boolean) hashA.get(")) && !((Boolean) hashB.))) { return -; } if (!((Boolean) hashA.")) && ((Boolean) hashB.return { return ((String) hashA.")).compareTo((String) hashB.)); } } } SizeComparator implements Comparator { if (((Long) hashA.")) > ((Long) hashB.))) { ; } ")) < ((Long) hashB. { ; } } } } TypeComparator implements Comparator { )); } } } } 前端核心代码: var editor; KindEditor .ready(function(K) { editor = K .create( 'textarea[id="postContent"]'../../blog-web/static/vendor/kindeditor/plugins/code/prettify.css ],filePostName : 这里就是指定文件上传的请求地址,上面也已经说了,upload_json.jsp就相当去一个servlet去进行保存文件,这个地方很重要 uploadJson : Blog.url.api.KindEditorUpload,fileManagerJson :Blog.url.api.KindEditorFileManager,resizeType : 本文参考资料如下: https://blog.csdn.net/u012131769/article/details/47430873(我参考这各地址实践成功的,希望能够对大家有所启发) https://blog.csdn.net/kaisens/article/details/78586597 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |