java图片上传后台实现以及删除时删除目录
package com.ims8100.util; import java.io.File; import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; public class PhotoUtil { public static String addImage(HttpServletRequest request, String path2) { return addImage(request, "photo", path2); } /** * 删除目录(文件夹)以及目录下的文件 * @param sPath 被删除目录的文件路径 * @return 目录删除成功返回true,否则返回false */ public static boolean deleteDirectory(String sPath) { //如果sPath不以文件分隔符结尾,自动添加文件分隔符 if (!sPath.endsWith(File.separator)) { sPath = sPath + File.separator; } File dirFile = new File(sPath); //如果dir对应的文件不存在,或者不是一个目录,则退出 if (!dirFile.exists() || !dirFile.isDirectory()) { return false; } boolean flag = true; //删除文件夹下的所有文件(包括子目录) File[] files = dirFile.listFiles(); for (int i = 0; i < files.length; i++) { //删除子文件 if (files[i].isFile()) { flag = deleteFile(files[i].getAbsolutePath()); if (!flag) break; } //删除子目录 else { flag = deleteDirectory(files[i].getAbsolutePath()); if (!flag) break; } } if (!flag) return false; //删除当前目录 if (dirFile.delete()) { return true; } else { return false; } } /** * 删除单个文件 * @param sPath 被删除文件的文件名 * @return 单个文件删除成功返回true,否则返回false */ private static boolean deleteFile(String sPath) { boolean flag = false; File file = new File(sPath); // 路径为文件且不为空则进行删除 if (file.isFile() && file.exists()) { file.delete(); flag = true; } return flag; } /** * 上传图片文件,并保存到指定的路径当中 */ private static String addImage(HttpServletRequest request, String path1, String path2) { // 转型为MultipartHttpRequest(重点的所在) MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; // 获得图片(根据前台的name名称得到上传的文件) MultipartFile imgFile1 = multipartRequest.getFile("imgFile"); // 保存图片 if (!(imgFile1.getOriginalFilename() == null || "".equals(imgFile1 .getOriginalFilename()))) { /* * 下面调用的方法,主要是用来检测上传的文件是否属于允许上传的类型范围内,及根据传入的路径名 * 自动创建文件夹和文件名,返回的File文件我们可以用来做其它的使用,如得到保存后的文件名路径等这里我就先不做多的介绍。 */ File file1 = getFile(request, imgFile1, path1, path2); if (file1.exists()) { return file1.getAbsolutePath().toString(); } } return ""; } /** * 通过传入页面读取到的文件,处理后保存到本地磁盘,并返回一个已经创建好的File * * @param imgFile * 从页面中读取到的文件 * @param typeName * 一级目录 * @param brandName * 二级目录 * @return */ private static File getFile(HttpServletRequest request, MultipartFile imgFile, String typeName, String brandName) { String fileName = imgFile.getOriginalFilename(); // 获取上传文件类型的扩展名,先得到.的位置,再截取从.的下一个位置到文件的最后,最后得到扩展名 String ext = fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length()); // 对扩展名进行小写转换 ext = ext.toLowerCase(); File file = null; // 创建文件 file = creatFolder(request, typeName, brandName, fileName); try { imgFile.transferTo(file); // 保存上传的文件 } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return file; } /** * 检测与创建一级、二级文件夹、文件名 这里我通过传入的两个字符串来做一级文件夹和二级文件夹名称 * 通过此种办法我们可以做到根据用户的选择保存到相应的文件夹下 */ private static File creatFolder(HttpServletRequest request, String typeName, String brandName, String fileName) { File file = null; typeName = typeName.replaceAll("/", ""); // 去掉"/" typeName = typeName.replaceAll(" ", ""); // 替换半角空格 typeName = typeName.replaceAll(" ", ""); // 替换全角空格 brandName = brandName.replaceAll("/", ""); // 去掉"/" brandName = brandName.replaceAll(" ", ""); // 替换半角空格 brandName = brandName.replaceAll(" ", ""); // 替换全角空格 @SuppressWarnings("deprecation") String path = request.getRealPath("/") + "imsres/"; // String path = "/imsres/"; // System.out.println(path); File firstFolder = new File(path + typeName); // 一级文件夹 if (firstFolder.exists()) { // 如果一级文件夹存在,则检测二级文件夹 File secondFolder = new File(firstFolder, brandName); if (secondFolder.exists()) { // 如果二级文件夹也存在,则删除文件 secondFolder.delete(); // file = new File(secondFolder, fileName); } // 创建二级文件夹 secondFolder.mkdir(); file = new File(secondFolder, fileName); // 创建完二级文件夹后,再合建文件 } else { // 如果一级不存在,则创建一级文件夹 firstFolder.mkdir(); File secondFolder = new File(firstFolder, brandName); if (secondFolder.exists()) { // 如果二级文件夹也存在,则删除文件 secondFolder.delete(); } // 创建二级文件夹 secondFolder.mkdir(); file = new File(secondFolder, fileName); } return file; } }
欢迎转载,但转载请注明原文链接[博客园: http://www.cnblogs.com/jingLongJun/]
[CSDN博客:http://blog.csdn.net/mergades]。
如相关博文涉及到版权问题,请联系本人。
[CSDN博客:http://blog.csdn.net/mergades]。
如相关博文涉及到版权问题,请联系本人。