package util; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.commons.CommonsMultipartResolver; /** * https://blog.csdn.net/saytime/article/details/51416411 * https://blog.csdn.net/niuch1029291561/article/details/17377903 * @ClassName: ImageUploadUtil * @Description: 图片上传工具类,包括ckeditor操作 */ public class ImageUploadUtil { // 图片类型 private static List<String> fileTypes = new ArrayList<String>(); static { fileTypes.add(".jpg"); fileTypes.add(".jpeg"); fileTypes.add(".bmp"); fileTypes.add(".gif"); fileTypes.add(".png"); } /** * 图片上传 * * @Title upload * @param request * @param DirectoryName * 文件上传目录:比如upload(无需带前面的/) upload/news .. * @return * @throws IllegalStateException * @throws IOException */ public static String upload(HttpServletRequest request, String DirectoryName) throws IllegalStateException, IOException { // 创建一个通用的多部分解析器 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession() .getServletContext()); // 图片名称 String fileName = null; // 判断 request 是否有文件上传,即多部分请求 if (multipartResolver.isMultipart(request)) { // 转换成多部分request System.out.println(request.getClass()); MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request; // 取得request中的所有文件名 Iterator<String> iter = multiRequest.getFileNames(); while (iter.hasNext()) { // 记录上传过程起始时的时间,用来计算上传时间 // int pre = (int) System.currentTimeMillis(); // 取得上传文件 MultipartFile file = multiRequest.getFile(iter.next()); if (file != null) { // 取得当前上传文件的文件名称 String myFileName = file.getOriginalFilename(); // 如果名称不为“”,说明该文件存在,否则说明该文件不存在 if (myFileName.trim() != "") { // 获得图片的原始名称 String originalFilename = file.getOriginalFilename(); // 获得图片后缀名称,如果后缀不为图片格式,则不上传 String suffix = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase(); if (!fileTypes.contains(suffix)) { continue; } // 获得上传路径的绝对路径地址(/upload)--> String realPath = request.getSession().getServletContext().getRealPath("/" + DirectoryName); System.out.println(realPath); // 如果路径不存在,则创建该路径 File realPathDirectory = new File(realPath); if (realPathDirectory == null || !realPathDirectory.exists()) { realPathDirectory.mkdirs(); } // 采用时间+UUID的方式重命名上传后的文件名 fileName = java.util.UUID.randomUUID().toString() + suffix; // 定义上传路径 .../upload/111112323.jpg File uploadFile = new File(realPathDirectory + "\\" + fileName); System.out.println(uploadFile); file.transferTo(uploadFile); } } // 记录上传该文件后的时间 // int finaltime = (int) System.currentTimeMillis(); // System.out.println(finaltime - pre); } } return fileName; } /** * ckeditor文件上传功能,回调,传回图片路径,实现预览效果。 * * @Title ckeditor * @param request * @param response * @param DirectoryName * 文件上传目录:比如upload(无需带前面的/) upload/.. * @throws IOException */ public static void ckeditor(HttpServletRequest request, HttpServletResponse response, String DirectoryName) throws IOException { String fileName = upload(request, DirectoryName); // 结合ckeditor功能 // imageContextPath为图片在服务器地址,如upload/123.jpg,非绝对路径 String imageContextPath = request.getContextPath() + "/" + DirectoryName + "/" + fileName; response.setContentType("text/html;charset=UTF-8"); String callback = request.getParameter("CKEditorFuncNum"); PrintWriter out = response.getWriter(); out.println("<script type=\"text/javascript\">"); out.println("window.parent.CKEDITOR.tools.callFunction(" + callback + ",'" + imageContextPath + "',''" + ")"); out.println("</script>"); out.flush(); out.close(); } }

baotaojixie LV1
2024年7月11日
zzh1 LV7
2022年11月8日
wjh12345654321 LV14
2022年8月25日
纪凡琪 LV2
2022年7月12日
zhangby LV6
2020年12月5日
松烟入墨2018 LV16
2020年7月8日
cchen LV12
2020年5月28日
1126055836 LV15
2020年5月27日
ofeiyuo LV7
2020年5月13日
kong.yee LV40
2020年5月9日

baotaojixie LV1
2024年7月11日
dane168 LV8
2024年7月11日
hugoddx2024 LV1
2024年7月11日
softandroad
2022年11月8日
暂无贡献等级
zzh1 LV7
2022年11月8日
纪凡琪 LV2
2022年7月12日
denliv_hui LV13
2022年4月5日
zero11 LV1
2021年9月30日
少年和她
2021年9月23日
暂无贡献等级
疯子也有疯子的情调 LV2
2021年8月24日