最近后台要求要指定上传附件的时间日期,编辑器是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. savePath += ymd + "/";
  82. saveUrl += ymd + "/";
  83. File dirFile = new File(savePath);
  84. if (!dirFile.exists()) {
  85. dirFile.mkdirs();
  86. }
  87.  
  88. FileItemFactory factory = new DiskFileItemFactory();
  89. ServletFileUpload upload = new ServletFileUpload(factory);
  90. upload.setHeaderEncoding("UTF-8");
  91. List items = upload.parseRequest(request);
  92. Iterator itr = items.iterator();
  93. while (itr.hasNext()) {
  94. FileItem item = (FileItem) itr.next();
  95. String fileName = item.getName();
  96. String oldFileName = fileName;
  97. long fileSize = item.getSize();
  98. if (!item.isFormField()) {
  99. //检查文件大小
  100. if(item.getSize() > maxSize){
  101. out.println(getError("上传文件大小超过限制。"));
  102. return;
  103. }
  104. //检查扩展名
  105. String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
  106. if(!Arrays.<String>asList(extMap.get(dirName).split(",")).contains(fileExt)){
  107. out.println(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"));
  108. return;
  109. }
  110.  
  111. Date date = df.parse(fileTime);
  112.  
  113. calendar.setTime(date);
  114.  
  115. String newFileName = String.valueOf(calendar.get(Calendar.YEAR))
  116. + month
  117. + day
  118. + String.valueOf(calendar.get(Calendar.HOUR_OF_DAY))
  119. + String.valueOf(calendar.get(Calendar.MINUTE))
  120. + String.valueOf(calendar.get(Calendar.SECOND))
  121. + "_" + new Random().nextInt(1000) + "." + fileExt;
  122. try{
  123. File uploadedFile = new File(savePath, newFileName);
  124. item.write(uploadedFile);
  125. }catch(Exception e){
  126. out.println(getError("上传文件失败。"));
  127. return;
  128. }
  129.  
  130. JSONObject obj = new JSONObject();
  131. obj.put("error", 0);
  132. obj.put("url",saveUrl + newFileName);//
  133. if(extMap.get("file").contains(newFileName.substring(newFileName.lastIndexOf(".")+1))){
  134. request.getSession().setAttribute("attachment",true);
  135. }
  136. // obj.put("url",oldFileName);//回显原文件名,回显图片的原文件名时会导致显示有问题
  137. out.println(obj.toJSONString());
  138. }
  139. }
  140. %>
  141. <%!
  142. private String getError(String message) {
  143. JSONObject obj = new JSONObject();
  144. obj.put("error", 1);
  145. obj.put("message", message);
  146. return obj.toJSONString();
  147. }
  148. %>

kindeditor 4 指定生成文件的时间日期/动态获取My97的时间的更多相关文章

  1. js动态获取当前系统时间+js字符串转换为date日期对象

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  2. java 时间日期

    Java 日期时间 java.util 包提供了 Date 类来封装当前的日期和时间. Date 类提供两个构造函数来实例化 Date 对象. 第一个构造函数使用当前日期和时间来初始化对象. Date ...

  3. mybatis 自动生成文件配置

    maven 依赖配置: <!-- sql server --><dependency> <groupId>com.microsoft.sqlserver</g ...

  4. Java8 时间日期类操作

    Java8 时间日期类操作 Java8的时间类有两个重要的特性 线程安全 不可变类,返回的都是新的对象 显然,该特性解决了原来java.util.Date类与SimpleDateFormat线程不安全 ...

  5. Word 文档插入时间日期禁止自动更新

    前些天写了点总结并插入时间和日期,记得勾掉了那个自动更新的,但是刚才打开时发现当时的日期和时间变成现在的了,我就纳闷了,然后我去看那插入日期和时间的那个框,里面确实没有勾选自动更新,于是百度, 百度都 ...

  6. MYSQL常用的时间日期函数

    #时间日期函数 #获取当前日期XXXX-XX-XXSELECT CURRENT_DATE(); SELECT CURDATE();#效果与上一条相同 #获取当前日期与时间XXXX-XX-XX XX:X ...

  7. 12-Perl 时间日期

    1.Perl 时间日期本章节介绍 Perl 语言对时间日期的处理.Perl中处理时间的函数有如下几种: time() 函数:返回从1970年1月1日起累计的秒数 localtime() 函数:获取本地 ...

  8. Java基础 - Date的相关使用(获取系统当前时间)

    前言: 在日常Java开发中,常常会使用到Date的相关操作,如:获取当前系统时间.获取当前时间戳.时间戳按指定格式转换成时间等.以前用到的时候,大部分是去网上找,但事后又很快忘记.现为方便自己今后查 ...

  9. Java获取NTP网络时间

    最近项目中涉及到一个时间验证的问题,需要根据当前时间来验证业务数据是否过期.所以直接写代码如下: new java.util.Date().getTime();          结果测试的时候出现了 ...

随机推荐

  1. 【Codeforces Round #432 (Div. 2) B】Arpa and an exam about geometry

    [链接]h在这里写链接 [题意] 给你3个点A,B,C 问你能不能将纸绕着坐标轴上的一点旋转.使得A与B重合,B与C重合 [题解] 这3个点必须共圆. 则A,B,C不能为一条直线.否则无解. 共圆之后 ...

  2. 【Codeforces Round #432 (Div. 1) A】 Five Dimensional Points

    [链接]点击打开链接 [题意] 给你n个5维的点. 然后让你以其中的某一个点作为起点a. 另选两个点b,c. 组成向量a->b,a->c 如果所有的a->b和a->c的夹角都是 ...

  3. iOS 中使用 XIB 自定义cell的两种方法以及编译出现常见 的错误 (xcode6.0之后)

    一. 注册cell 1.创建自定义cell并勾选 xib :(勾选xib就会自动生成与cell文件关联的xib) 2.在 tableViewController里注册自定义Cell (或者遵守tabl ...

  4. Library Component Properties的表格如何填写

  5. Day2:数据类型

    一.数字 1.整型(int),无长整型.python3.x,不论多大的数都是int #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuh ...

  6. 每天自动备份MySQL数据库的shell脚本

    经常备份数据库是一个好习惯,虽然数据库损坏或数据丢失的概率很低,但一旦发生这种事情,后悔是没用的.一般网站或应用的后台都有备份数据库的功能按钮,但需要去手工执行.我们需要一种安全的,每天自动备份的方法 ...

  7. Java基础学习总结(28)——Java对各种排序算法的实现

    这里总结下各种排序算法的java实现 冒泡排序 public class BubbleSort { publicstaticint[] bubbleSort(int[] array) { if(arr ...

  8. Qt5 UI信号、槽自动连接的控件重名大坑(UI生成的槽函数存在一个隐患,即控件重名。对很复杂的控件,不要在 designer 里做提升,而是等到程序启动后,再动态创建,可以避免很多问题)

    对Qt5稍有熟悉的童鞋都知道信号.槽的自动连接机制.该机制使得qt designer 设计的UI中包含的控件,可以不通过显式connect,直接和cpp中的相应槽相关联.该机制的详细文章见 http: ...

  9. POJ 1511 Invitation Cards (ZOJ 2008) 使用优先队列的dijkstra

    传送门: http://poj.org/problem?id=1511 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1008 ...

  10. 1.2.4 Java Annotation 提要

    (本文是介绍依赖注入容器Spring和分析JUnit源码的准备知识) Java Annotation(标注) java.lang.annotation.Annotation是全部Java标注的父接口. ...