<%@page import="java.net.URLEncoder"%> <%@page import="java.net.URLDecoder"%> <%@page import="java.io.UnsupportedEncodingException"%> <%@page import="java.util.Enumeration"%> <%@page import="com.sun.org.apache.regexp.internal.REUtil"%> <%@page import="java.util.Iterator"%> <%@page import="java.util.*"%> <%@page import="com.primeton.das.entity.impl.hibernate.mapping.Array"%> <%@page import="com.eos.foundation.database.DatabaseUtil"%> <%@page import="com.eos.data.datacontext.DataContextManager"%> <%@page import="java.text.DecimalFormat"%> <%@page import="com.eos.foundation.data.DataObjectUtil"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="false" %> <%@page import="java.util.ArrayList"%> <%@page import="commonj.sdo.DataObject"%> <%@page import="java.util.Date"%> <%@page import="java.util.Calendar"%> <%@page import="java.io.File"%> <%@page import="java.io.IOException"%> <%@page import="java.util.List"%> <%@page import="javax.servlet.http.HttpServletRequest"%> <%@page import="javax.servlet.http.HttpServletResponse"%> <%@page import="org.apache.commons.fileupload.FileItem"%> <%@page import="org.apache.commons.fileupload.FileUploadException"%> <%@page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%> <%@page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%>
<%@page import="com.primeton.eos.cwk_hyjys.dataset.LcFile"%> <%@page import="java.sql.Timestamp"%> <%@page import="com.eos.data.datacontext.DataContextManager"%> <%@page import="com.eos.data.datacontext.IUserObject"%>
<%! //List<DataObject> accessories = null; //String serverPath = null; String uploadStr = ""; String encodeUrl(String path) { // 先处理% path = path.replace("%", "%"); path = path.replace("+", "+"); path = path.replace(" ", " "); path = path.replace("/", "/"); path = path.replace("?", "?"); path = path.replace("#", "#"); path = path.replace("&", "&"); path = path.replace("=", "="); return path; } String upload(HttpServletRequest request) { String serverPath = null; try { request.setCharacterEncoding("ISO-8859-1"); } catch(UnsupportedEncodingException ex) { } String uploadDirName = "upload"; String tempDirName = "temp"; StringBuilder sBuilder = new StringBuilder(); // 设置根目录 String webAppRealPath = request.getSession().getServletContext().getRealPath("/"); // 获取缓存目录 sBuilder.append(webAppRealPath).append(uploadDirName).append(File.separator); sBuilder.append(tempDirName); String tempFilePath = sBuilder.toString(); Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); sBuilder.delete(0, sBuilder.length()); sBuilder.append(webAppRealPath).append(uploadDirName).append(File.separator); sBuilder.append(calendar.get(Calendar.YEAR)).append("-"); int month = calendar.get(Calendar.MONTH) + 1; int day = calendar.get(Calendar.DAY_OF_MONTH) ; sBuilder.append(month >= 10 ? month : "0" + month); String filePath = sBuilder.toString(); // 要保存在数据库中的路径名称 String pathName =webAppRealPath+ File.separator + uploadDirName + File.separator + calendar.get(Calendar.YEAR) + "-" + (month >= 10 ? month : "0" + month); File tanSure=new File(webAppRealPath + uploadDirName + File.separator); System.out.println(webAppRealPath + uploadDirName + File.separator); if(!tanSure.exists()) { tanSure.mkdirs(); } String lcm = request.getParameter("lcm"); tanSure=new File(webAppRealPath+ uploadDirName + File.separator+lcm+File.separator); System.out.println(webAppRealPath + uploadDirName + File.separator+lcm+File.separator); if(!tanSure.exists()) { tanSure.mkdirs(); } tanSure=new File(webAppRealPath + uploadDirName + File.separator+lcm+File.separator+calendar.get(Calendar.YEAR)); System.out.println(webAppRealPath + uploadDirName + File.separator+lcm+File.separator+calendar.get(Calendar.YEAR)); if(!tanSure.exists()) { tanSure.mkdirs(); } tanSure=new File(webAppRealPath + uploadDirName + File.separator+lcm+File.separator+calendar.get(Calendar.YEAR) +File.separator+ (month >= 10 ? month : "0" + month)); System.out.println(webAppRealPath + uploadDirName + File.separator+lcm+File.separator+calendar.get(Calendar.YEAR) +File.separator+ (month >= 10 ? month : "0" + month)); if(!tanSure.exists()) { tanSure.mkdirs(); } tanSure=new File(webAppRealPath + uploadDirName + File.separator+lcm+File.separator+calendar.get(Calendar.YEAR) +File.separator+ (month >= 10 ? month : "0" + month)+File.separator+day); System.out.println(webAppRealPath + uploadDirName + File.separator+lcm+File.separator+calendar.get(Calendar.YEAR) +File.separator+ (month >= 10 ? month : "0" + month)+File.separator+day); if(!tanSure.exists()) { tanSure.mkdirs(); } pathName=webAppRealPath + uploadDirName + File.separator+lcm+File.separator+calendar.get(Calendar.YEAR) +File.separator+ (month >= 10 ? month : "0" + month)+File.separator+day; filePath=pathName; pathName= uploadDirName + File.separator+lcm+File.separator+calendar.get(Calendar.YEAR) +File.separator+ (month >= 10 ? month : "0" + month)+File.separator+day; File tempDir = new File(tempFilePath); //File uploadFileDir = new File(filePath); File uploadFileDir = new File(pathName); if(!tempDir.exists()) { tempDir.mkdirs(); } if(!uploadFileDir.exists()) { uploadFileDir.mkdirs(); } DiskFileItemFactory factory = new DiskFileItemFactory(); // 设置内存缓冲区,超过后写入临时文件 factory.setSizeThreshold(10240000); // 设置临时文件存储位置 factory.setRepository(tempDir); ServletFileUpload upload = new ServletFileUpload(factory); // 设置单个文件的最大上传值 upload.setSizeMax(10002400000l); // 设置整个request的最大值 upload.setSizeMax(10002400000l); upload.setHeaderEncoding("UTF-8"); try { List<?> items = upload.parseRequest(request); FileItem item = null; String fileName = null; if(items == null) return ""; // List<DataObject> accessories = new ArrayList<DataObject>(); serverPath = ""; for (int i = 0 ;i < items.size(); i++){ item = (FileItem) items.get(i); if(item == null) continue; String uniqueName = getUniqueFileName(item.getName()); fileName = filePath + File.separator + uniqueName; // 保存文件 if (!item.isFormField() && item.getName().length() > 0) { File fileToBeKept = new File(fileName); item.write(fileToBeKept); if(fileToBeKept != null && fileToBeKept.exists()) { // DataObject accessory = DataObjectUtil.createDataObject("com.primeton.eos.cwk_hyjys.dataset.LcFile"); pathName = pathName + File.separator + encodeUrl(uniqueName); //System.out.println(pathName); if("".equals(serverPath)){ serverPath = serverPath +pathName; }else{ serverPath = serverPath+","+pathName; } // accessory.setString("url", pathName); System.out.println("originalname:"+item.getName()); accessory.setString("originalname", item.getName()); accessory.setLong("filesize", fileToBeKept.length()); accessory.setDate("uploadtime", new Timestamp(System.currentTimeMillis()) ); accessory.setString("filesizetext", FormetFileSize(fileToBeKept.length())); // accessory.setString("uploaduserid", DataContextManager.current().getMUODataContext().getUserObject().getUserId()); // accessory.setString("uploaduserName", com.primeton.cap.AppUserManager.getCurrentUserName()); // System.out.println("uploaduserid:"+DataContextManager.current().getMUODataContext().getUserObject().getUserId()); // System.out.println("uploaduserName:"+com.primeton.cap.AppUserManager.getCurrentUserName()); accessory.setString("uploaduserid", DataContextManager.current().getMUODataContext().getUserObject().getUserId()); accessory.setString("uploadusername", com.primeton.cap.AppUserManager.getCurrentUserName()); //accessory.setString("filesize", FormetFileSize(fileToBeKept.length())); //String userId = request.getParameter("userId"); //String userName = request.getParameter("userName"); //try { //userName = URLDecoder.decode(userName, "utf-8"); //System.out.println(request.getQueryString()); //System.out.println(userName); //} //catch(Exception ex) {} /* String id = request.getParameter("id"); String operationId = request.getParameter("operationId"); String phototype = request.getParameter("phototype"); accessory.setString("userid", userId);*/ /* accessory.setString("username", userName); if(id != null && !"undefined".equals(id)&& !"".equals(id)){ accessory.setString("id", id); } accessory.setString("operationid", operationId); accessory.setString("phototype", phototype); accessory.setString("path", pathName); accessory.setDate("createtime", new Date()); accessories.add(accessory); String dsName = "default"; */ //saveAccessory(dsName,accessories); accessories.add(accessory); } } } String dsName = "default"; saveAccessory(dsName,accessories); System.out.println( "id:"+accessories.get(0).getString("id")); serverPath=serverPath.replaceAll("\\\\", "\\\\\\\\"); serverPath= "{\"url\":\""+serverPath+"\",\"id\":\""+accessories.get(0).getString("id"); serverPath= serverPath+"\",\"originalname\":\""+accessories.get(0).getString("originalname"); serverPath= serverPath+"\",\"uploadusername\":\""+accessories.get(0).getString("uploadusername"); serverPath= serverPath+"\",\"filesizetext\":\""+accessories.get(0).getString("filesizetext")+"\"}"; System.out.println("size:"+accessories.size()); } catch (FileUploadException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return serverPath; } void saveAccessory(String dsName,List<DataObject> accessories) { DataObject[] arrayToSave = accessories.toArray(new DataObject[0]); if(arrayToSave != null) { DatabaseUtil.saveEntities(dsName, arrayToSave); System.out.println(arrayToSave.length); } } String FormetFileSize(long fileS) {//转换文件大小 DecimalFormat df = new DecimalFormat("#.00"); String fileSizeString = ""; if (fileS < 1024) { fileSizeString = df.format((double) fileS) + "B"; } else if (fileS < 1048576) { fileSizeString = df.format((double) fileS / 1024) + "K"; } else if (fileS < 1073741824) { fileSizeString = df.format((double) fileS / 1048576) + "M"; } else { fileSizeString = df.format((double) fileS / 1073741824) + "G"; } return fileSizeString; } String getFileNameNoEx(String filename) { if ((filename != null) && (filename.length() > 0)) { int dot = filename.lastIndexOf('.'); if ((dot > -1) && (dot < (filename.length()))) { return filename.substring(0, dot); } } return filename; } String getFileExtension(String fileName) { if (fileName.lastIndexOf(".") != -1 && fileName.lastIndexOf(".") != 0) { return fileName.substring(fileName.lastIndexOf(".") + 1); } else { return ""; } } String getUniqueFileName(String fileName) { if(fileName == null) return fileName; return getFileNameNoEx(fileName) + "_" + new Date().getTime() + "." + getFileExtension(fileName); } %> <% String serverPath = upload(request); //保存到数据库中: // String dsName = "default"; // List<DataObject> lists=new LinkedList<DataObject>(); // DataObject accessory = DataObjectUtil.createDataObject("com.primeton.eos.cwk_hyjys.dataset.LcFile");
// accessory.setLong("filesize", 1000L); // accessory.setString("url", "test"); // accessory.setString("uploaduserid", DataContextManager.current().getMUODataContext().getUserObject().getUserId()); // accessory.setString("uploaduserName", com.primeton.cap.AppUserManager.getCurrentUserName()); // accessory.setString("uploaduserid", "dd"); // accessory.setString("uploaduserName", "ddd"); // accessory.setDate("uploadtime", new Date()); // accessory.setDate("uploadtime", new Timestamp(System.currentTimeMillis()) ); // lists.add(accessory); // saveAccessory(dsName,lists);
//System.out.println("temp"+serverPath); // uploadStr =uploadStr+","+ serverPath; System.out.println("serverPath:"+serverPath); // System.out.println("uploadStr:"+uploadStr); response.getWriter().write(serverPath); //可以返回一个JSON字符串, 在客户端做更多处理 %>