<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <c:set var="ctx" value="${pageContext.request.contextPath}"/> <script src="${ctx}/jslib/uploadify/jquery.uploadify.js" type="text/javascript" charset="utf-8"></script> <link href="${ctx}/jslib/uploadify/uploadify.css" rel="stylesheet" type="text/css" /> <script type="text/javascript"> $(function() { //新增介面的附件管理 $("#file_upload").uploadify({ 'height' : 27, 'width' : 80, 'buttonText' : '新增附件', 'queueID': 'fileQueue', //佇列的ID 'queueSizeLimit':5, 'swf' : '${ctx}/jslib/uploadify/uploadify.swf', 'uploader' : '${ctx}/fileUpload/uploadFile', 'auto' : false, 'fileTypeExts' : '*.rar', 'fileObjName' : 'file', 'multi' : true, 'removeCompleted': false, //是否完成後移除序列,預設為true 'fileSizeLimit': '100MB', //單個檔案大小,0為無限制,可接受KB,MB,GB等單位的字串值 'onUploadSuccess':function(file, data, response){ var vv = data.split('|'); var bb = $("input[name=attachmentIds]").attr('value'); bb +="," + vv[0]; $("input[name=attachmentIds]").attr('value',bb); bb = $("input[name=attachmentNames]").attr('value'); bb +="," + vv[1]; $("input[name=attachmentNames]").attr('value',bb); //$.messager.alert("提示", "上傳完畢!"); } }); $('#documentId').combotree({ url : '${ctx}/dictionarytype/tree?code=documenttype', parentField : 'pid', panelHeight : 'auto', onBeforeExpand : function(node, param) { $('#documentId').combotree("tree").tree("options").url = "${ctx}/dictionarytype/trees?type=0&pId=" + node.id; } }); $('#documentAddForm').form({ url : '${ctx}/document/add', onSubmit : function() { progressLoad(); var isValid = $(this).form('validate'); if (!isValid) { progressClose(); }else{ var bb = $("input[name=attachmentIds]").attr('value'); var num = $("#file_upload").data('uploadify').queueData.queueLength; if(bb=="" && num>0){ progressClose(); $.messager.show({ title : '提示', msg : '<div class="light-info"><div class="light-tip icon-tip"></div><div>' + "您你附件還沒上傳,請先上傳附件!" + '</div></div>', showType : 'show' }); return false; } } return isValid; }, success : function(result) { progressClose(); result = $.parseJSON(result); if (result.success) { parent.$.modalDialog.openner_dataGrid.datagrid('reload');// $.messager .show({ title : '提示', msg : '<div class="light-info"><div class="light-tip icon-tip"></div><div>' + result.msg + '</div></div>', showType : 'show' }); parent.$.modalDialog.handler.dialog('close'); }else{ parent.$.messager.alert('提示', result.msg, 'warning'); } } }); }); function init(){ var attachments = $("input[name=attachmentIds]").attr('value'); $("input[name=attachmentIds]").attr('value',""); $('#file_upload').uploadify('cancel', '*'); if(attachments!=""){ $.post('${ctx}/fileUpload/deleteFile', { attachments : attachments }, function(result) { }, 'json'); } } </script> <div style="padding: 3px;"> <form id="documentAddForm" method="post"> <table class="grid"> <tr> <td>標題</td> <td colspan="3"><input name="title" type="text" placeholder="請輸入字典編碼" class="easyui-validatebox" data-options="required:true" style="width: 355px; height: 29px;" ></td> </tr> <tr> <td>排序</td> <td><input name="seq" value="0" class="easyui-numberspinner" style="width: 140px; height: 29px;" required="required" data-options="editable:false"></td> <td>類別</td> <td><select id="documentId" name="documentId" style="width: 140px; height: 29px;" data-options="required:true"></select></td> </tr> <tr> <td>備註</td> <td colspan="3"><textarea name="content" rows="5" cols="50" ></textarea></td> </tr> <tr> <td>文件附件</td> <td colspan="3"> <input name="attachmentIds" id="attachmentIds" type="hidden" class="easyui-validatebox" > <input name="attachmentNames" id="attachmentNames" type="hidden" class="easyui-validatebox" > <input type="file" name="file_upload" id="file_upload"/> <a class="easyui-linkbutton" href="javascript:$('#file_upload').uploadify('upload', '*')">上傳檔案</a> | <a class="easyui-linkbutton" href="javascript:init()">取消上傳</a> </td> </tr> </table> <div id="fileQueue" class="fileQueue"></div> </form> package east.mvc.controller.file;
package east.mvc.controller.file; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.PrintWriter; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Random; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.util.FileCopyUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import east.mvc.controller.base.BaseController; import east.mvc.framework.constant.GlobalConstant; import east.mvc.model.base.Graph; import east.mvc.model.sys.Tattachment; import east.mvc.pageModel.base.Grid; import east.mvc.pageModel.base.PageFilter; import east.mvc.pageModel.base.SessionInfo; import east.mvc.pageModel.sys.MapHistory; import east.mvc.service.basic.GraphServiceI; import east.mvc.service.sys.AttachmentServiceI; import east.mvc.service.sys.MapHistoryServiceI; import east.mvc.utils.StringUtil; @Controller @RequestMapping("/fileUpload") public class FileUploadController extends BaseController { private HttpServletRequest request = null; @Autowired private AttachmentServiceI attachmentService; @RequestMapping(value = "/uploadFile", method = RequestMethod.POST) public String uploadFile(HttpServletRequest request, HttpServletResponse response) throws IOException { this.request = request; String responseStr = ""; MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; // 獲取前臺傳值 Map<String, MultipartFile> fileMap = multipartRequest.getFileMap(); // String ctxPath = // request.getSession().getServletContext().getRealPath("/")+ "\\" + // "images\\"; String configPath = File.separator + "upload" + File.separator; // String vv = getPhysicalPath(configPath); // String vv2 = getPhysicalPathByRoot(configPath); String ctxPath = request.getSession().getServletContext().getRealPath("/"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); String year = sdf.format(new Date()); configPath += year + File.separator; sdf = new SimpleDateFormat("MM"); String month = sdf.format(new Date()); configPath += month + File.separator; ctxPath += configPath; // 建立資料夾 File file = new File(ctxPath); if (!file.exists()) { file.mkdirs(); } String fileName = null; for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) { // 上傳檔名 // System.out.println("key: " + entity.getKey()); MultipartFile mf = entity.getValue(); fileName = mf.getOriginalFilename(); String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase(); SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt; responseStr = configPath + newFileName + "|" + fileName; File uploadFile = new File(ctxPath + newFileName); try { FileCopyUtils.copy(mf.getBytes(), uploadFile); } catch (IOException e) { responseStr = "上傳失敗"; e.printStackTrace(); } } response.setHeader("Content-type", "text/html;charset=UTF-8"); // 這句話的意思,是告訴servlet用UTF-8轉碼,而不是用預設的ISO8859 response.setCharacterEncoding("UTF-8"); response.getWriter().write(responseStr); return null; } @RequestMapping("/deleteFile") @ResponseBody public void getAreaIds(HttpServletRequest request, String attachments) { if (!attachments.equals("")) { String ctxPath = request.getSession().getServletContext().getRealPath("/"); attachments = attachments.substring(1); String[] value = attachments.split(","); for (int i = 0; i < value.length; i++) { File file = new File(ctxPath + "//" + value[i]); file.delete(); } } } @RequestMapping("/downloadFile") @ResponseBody public void downloadFile(HttpServletRequest request, HttpServletResponse response, String attachmentId) throws Exception{ if (!attachmentId.equals("")) { Tattachment attachment = attachmentService.gets(attachmentId); if (attachment != null) { String fileName = attachment.getFileName(); String filePath = attachment.getFilePath(); BufferedInputStream in = null; BufferedOutputStream out = null; request.setCharacterEncoding("UTF-8"); String rootpath = request.getSession().getServletContext().getRealPath("/"); try { File f = new File(rootpath + "//" + filePath); response.setContentType("application/x-excel"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=" + fileName); response.setHeader("Content-Length", String.valueOf(f.length())); in = new BufferedInputStream(new FileInputStream(f)); out = new BufferedOutputStream(response.getOutputStream()); byte[] data = new byte[1024]; int len = 0; while (-1 != (len = in.read(data, 0, data.length))) { out.write(data, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { if (in != null) { in.close(); } if (out != null) { out.close(); } } } } } /** * 根據傳入的虛擬路徑獲取物理路徑 * * @param path * @return */ private String getPhysicalPath(String path) { String servletPath = this.request.getServletPath(); String realPath = this.request.getSession().getServletContext().getRealPath(servletPath); return new File(realPath).getParent() + "/" + path; } /** * 根據傳入的虛擬路徑獲取物理路徑(相對應根路徑) * * @param path * @return * @author fengjx * @date 2014年3月10日 */ private String getPhysicalPathByRoot(String path) { String realPath = this.request.getSession().getServletContext().getRealPath("/"); return new File(realPath).getPath() + "/" + path; } }
http://files.cnblogs.com/files/xsmhero/uploadify.rar