在项目中将产品图片全部放置在一个文件夹下面的话,如果图片很多的话,加载速度会减慢,可以按照文件夹按年,月,日来分开存放,图片文件名字取系统时间long类型加上5位随机数字码避免重复。
Calendar calendar = Calendar.getInstance(); /**按年月日来分*/ int year = calendar.get(Calendar.YEAR);//得到年 int month = calendar.get(Calendar.MONTH)+1;//得到月,因为从0开始的,所以要加1 int day = calendar.get(Calendar.DAY_OF_MONTH);//得到天 String filename = String.valueOf(calendar.getTimeInMillis() + StrUtils.randomNumeric(5)); saveurl = Constants.ROOTPATH + url; String path1 = saveurl + year + "/" ; String path2 = saveurl + year + "/" + month + "/" ; String path3 = saveurl + year + "/" + month + "/" + day + "/" ; //建立按年月日文件夹,如果文件夹不存在,就建立新的文件夹。 FileOperate.newFolder(path1); FileOperate.newFolder(path2); FileOperate.newFolder(path3); String pic_url = filename + "." + ext; saveurl = path3; //新的目录 saveurl += pic_url; //保存路径 //saveurl += filename; myFile.saveAs(saveurl, SmartUpload.SAVE_PHYSICAL); /**保存到数据库中的图片地址*/ pic_url = year + "/" + month + "/" + day + "/" + pic_url; //新的图片url
文件夹操作类FileOperate.java
/** * 新建目录 * * @param folderPath * String 如 c:/fqf * @return boolean */ public static void newFolder(String folderPath) { try { String filePath = folderPath; filePath = filePath.toString(); java.io.File myFilePath = new java.io.File(filePath); if (!myFilePath.exists()) { myFilePath.mkdir(); } } catch (Exception e) { // //ln("新建目录操作出错 "); e.printStackTrace(); log.error(e.getMessage(), e.fillInStackTrace()); } }
StrUtils类
public static String randomNumeric(int i) { return RandomStringUtils.randomNumeric(i); }
需要commons-lang-2.0.jar支持。