在項目中將產品圖片所有放置在一個文件夾下面的話,若是圖片不少的話,加載速度會減慢,能夠按照文件夾按年,月,日來分開存放,圖片文件名字取系統時間long類型加上5位隨機數字碼避免重複。java
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類dom
public static String randomNumeric(int i) { return RandomStringUtils.randomNumeric(i); }
須要commons-lang-2.0.jar支持。url