1. 程式人生 > >kindeditor 4 指定生成文件的時間日期/動態獲取My97的時間

kindeditor 4 指定生成文件的時間日期/動態獲取My97的時間

info 獲取 turn eal dex iter val pattern calendar

最近後臺要求要指定上傳附件的時間日期,編輯器是kindeditor,仔細研究後發現可以借助clickToolbar事件,傳遞時間到後臺,但是中途發現傳遞的時間總是初始化my97的時間,改變後的時間只有在提交時才能生效

於是又研究了下My97,終於解決

 1     <tr class="info">
 2         <td class="text-right">自定義發布時間</td>
 3         <td>
 4             <fmt:formatDate value="<%=new Date()%>" pattern="yyyy-MM-dd HH:mm:ss" var
="fmttime"></fmt:formatDate> 5 <div class=""> 6 <label for="time" class="col-md-2 control-label"> 7 <input type="text" class="form-control" name="releaseTime" value="${fmttime}" id="time" onClick="WdatePicker({dateFmt:‘yyyy-MM-dd HH:mm:ss‘,onpicked:function(dp){ setTime(dp) }})" disabled> 8
</label> 9 </div> 10 </td> 11 </tr>

js

 1 //需要動態設置my97的值到輸入框中否則無法獲取最新改變的時間
 2 function setTime(dp) {
 3     $("#time").attr("value",dp.cal.getNewDateStr(‘yyyy-MM-dd HH:mm:ss‘));
 4 }
 5 
 6 KindEditor.ready(function(k) {
 7     window.editor = k.create("textarea[name=‘content‘]",options);     
8 window.editor.clickToolbar("insertfile",function() { 9 var releaseTime =$("#time").attr("value"); 10 $.ajax({ 11 url:"${pageContext.request.contextPath}/kindeditor/jsp/upload_json.jsp?releaseTime=" + releaseTime, 12 dataType:"text", 13 type:"GET", 14 success:function() { 15 16 } 17 18 }); 19 20 }) 21 });

upload_json

  1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2 <%@ page import="java.util.*,java.io.*" %>
  3 <%@ page import="java.text.SimpleDateFormat" %>
  4 <%@ page import="org.apache.commons.fileupload.*" %>
  5 <%@ page import="org.apache.commons.fileupload.disk.*" %>
  6 <%@ page import="org.apache.commons.fileupload.servlet.*" %>
  7 <%@ page import="org.json.simple.*" %>
  8 <%
  9 String releaseTime = request.getParameter("releaseTime");
 10 if(releaseTime != null) {
 11     request.getSession().setAttribute("releaseTime",releaseTime);
 12 }
 13 //用於創建文件目錄和文件名
 14 String fileTime =(String)request.getSession().getAttribute("releaseTime");
 15 
 16 //文件保存目錄路徑
 17 String savePath = pageContext.getServletContext().getRealPath("/") + "attached/";
 18 
 19 //文件保存目錄URL
 20 String saveUrl  = request.getContextPath() + "/attached/";
 21 
 22 //定義允許上傳的文件擴展名
 23 HashMap<String, String> extMap = new HashMap<String, String>();
 24 extMap.put("image", "gif,jpg,jpeg,png,bmp");
 25 extMap.put("flash", "swf,flv");
 26 extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
 27 extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,zip,rar,gz,bz2,swf");
 28 
 29 //最大文件大小 1GB
 30 long maxSize = 1073741824;
 31 
 32 response.setContentType("text/html; charset=UTF-8");
 33 
 34 if(!ServletFileUpload.isMultipartContent(request)){
 35     out.println(getError("請選擇文件。"));
 36     return;
 37 }
 38 //檢查目錄
 39 File uploadDir = new File(savePath);
 40 if(!uploadDir.isDirectory()){
 41     out.println(getError("上傳目錄不存在。"));
 42     return;
 43 }
 44 //檢查目錄寫權限
 45 if(!uploadDir.canWrite()){
 46     out.println(getError("上傳目錄沒有寫權限。"));
 47     return;
 48 }
 49 
 50 String dirName = request.getParameter("dir");
 51 if (dirName == null) {
 52     dirName = "image";
 53 }
 54 if(!extMap.containsKey(dirName)){
 55     out.println(getError("目錄名不正確。"));
 56     return;
 57 }
 58 //創建文件夾
 59 savePath += dirName + "/";
 60 saveUrl += dirName + "/";
 61 File saveDirFile = new File(savePath);
 62 if (!saveDirFile.exists()) {
 63     saveDirFile.mkdirs();
 64 }
 65 //SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
 66 //時間日期設置
 67 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//註意這種格式的時間含有空格無法生成文件名
 68 Calendar calendar = Calendar.getInstance();
 69 calendar.setTime(df.parse(fileTime));
 70 
 71 String month = String.valueOf(calendar.get(Calendar.MONTH)+1);
 72 if(month.length()<2) {
 73     month = "0" + month;
 74 }
 75 String day = String.valueOf(calendar.get(Calendar.DAY_OF_MONTH));
 76 if(day.length() < 2) {
 77     day = "0"+day;
 78 }
 79 String ymd = String.valueOf(calendar.get(Calendar.YEAR))+month + day;
 80 
 81 
 82 savePath += ymd + "/";
 83 saveUrl += ymd + "/";
 84 File dirFile = new File(savePath);
 85 if (!dirFile.exists()) {
 86     dirFile.mkdirs();
 87 }
 88 
 89 FileItemFactory factory = new DiskFileItemFactory();
 90 ServletFileUpload upload = new ServletFileUpload(factory);
 91 upload.setHeaderEncoding("UTF-8");
 92 List items = upload.parseRequest(request);
 93 Iterator itr = items.iterator();
 94 while (itr.hasNext()) {
 95     FileItem item = (FileItem) itr.next();
 96     String fileName = item.getName();
 97     String oldFileName = fileName;
 98     long fileSize = item.getSize();
 99     if (!item.isFormField()) {
100         //檢查文件大小
101         if(item.getSize() > maxSize){
102             out.println(getError("上傳文件大小超過限制。"));
103             return;
104         }
105         //檢查擴展名
106         String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
107         if(!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)){
108             out.println(getError("上傳文件擴展名是不允許的擴展名。\n只允許" + extMap.get(dirName) + "格式。"));
109             return;
110         }
111 
112     
113         Date date = df.parse(fileTime);
114         
115         
116         calendar.setTime(date);
117         
118         
119         String newFileName = String.valueOf(calendar.get(Calendar.YEAR))
120                                 + month
121                                 + day
122                                 + String.valueOf(calendar.get(Calendar.HOUR_OF_DAY))
123                                 + String.valueOf(calendar.get(Calendar.MINUTE)) 
124                                 + String.valueOf(calendar.get(Calendar.SECOND))
125                                 + "_" + new Random().nextInt(1000) + "." + fileExt;
126         try{
127             File uploadedFile = new File(savePath, newFileName);
128             item.write(uploadedFile);
129         }catch(Exception e){
130             out.println(getError("上傳文件失敗。"));
131             return;
132         }
133 
134         
135         JSONObject obj = new JSONObject();
136         obj.put("error", 0);
137         obj.put("url",saveUrl + newFileName);//
138         if(extMap.get("file").contains(newFileName.substring(newFileName.lastIndexOf(".")+1))){
139             request.getSession().setAttribute("attachment",true);
140         }
141     //    obj.put("url",oldFileName);//回顯原文件名,回顯圖片的原文件名時會導致顯示有問題
142         out.println(obj.toJSONString());
143     }
144 }
145 %>
146 <%!
147 private String getError(String message) {
148     JSONObject obj = new JSONObject();
149     obj.put("error", 1);
150     obj.put("message", message);
151     return obj.toJSONString();
152 }
153 %>

kindeditor 4 指定生成文件的時間日期/動態獲取My97的時間