jsp:javascript
<tr > <td bgcolor="#FFFFFF" width="15%" align="right"> 附件:</td> <td bgcolor="#FFFFFF" colspan="3"> <div style="margin:3px" > <input class="modify_module" type="file" id="file" name="file" onchange="_addFile()"/> <table id="fileList" border="0" cellspacing="0" cellpadding="0"style="background-color:#FFF;"> <c:if test="${!empty files}"> <c:forEach items="${files}" step="1" var="file" varStatus="status"> <tr> <td class="td_l td_file" align="left" height="30px" id="${file.uuid }"> <a href="javascript:void(0)" name="uploadFileName" onclick="_downLoad('${file.uuid }','${file.url }','${file.name }')">${file.name }</a> <a class="modify_module" href="javascript:void(0)" name="deleteFile" onclick="_delete('${file.uuid }','${file.url }','${file.name }')">[刪除]</a> </td> </tr> </c:forEach> </c:if> </table> </div> </td> </tr>
js:java
//即時上傳文件 function _addFile(){ var length=$("#fileList tr").length; if(length>=5){ $.messager.alert("提示","最多隻能上傳5張附件","warning"); return ; } $.ajaxFileUpload({ url: context+'/checkresult/checkresult_uploadFile.do', type: 'post', secureuri: false, //通常設置爲false fileElementId: "file", // 上傳文件的id、name屬性名 dataType: 'json', //返回值類型,通常設置爲json、application/json data:{groupUUID : $("#td_groupuuid1").val()}, //傳遞參數到服務器 success: function(data, status){ if (data.status == "success") { var fileUUID = data.fileUUID; var url = data.url; var name = data.fileName; var tr_str = "<tr><td class='td_l td_file' align='left' height='30px' id=\""+fileUUID+"\"></td></tr>" $('#fileList').append(tr_str); var a_str = "<a href='javascript:void(0)' name='uploadFileName' onclick='_downLoad(\""+fileUUID+"\",\""+url+"\",\""+name+"\")'/>"+name+"</a>"; a_str += " <a class='modify_module' href='javascript:void(0)' name='deleteFile' onclick='_delete(\""+fileUUID+"\",\""+url+"\",\""+name+"\")'>[刪除]</a>"; document.getElementById(fileUUID).innerHTML = a_str; $.messager.alert("提示","上傳成功","info"); } else { $.messager.alert("提示","上傳失敗","warning"); } }, error: function(data, status, e){ $.messager.alert("提示","上傳失敗","error"); } }); } //刪除文件 function _delete(fileUUID, url, name){ $.ajax({ cache: true, type: "POST", url: context+"/base/file_deleteFile.do", dataType:'json', data:{fileUUID:fileUUID, url:url, fileName:name}, async: true, error: function(request) { $.messager.alert("提示","刪除失敗","warning"); }, success: function(data) { $("#"+fileUUID).parent().remove(); $.messager.alert("提示","刪除成功","info"); } }); } //下載文件 function _downLoad(fileUUID, url, name){ var url = escape(escape(url)); var name = escape(escape(name)); var urlstr = context+"/base/file_downLoadFile.do?fileUUID="+fileUUID+"&url="+url+"&fileName="+name; window.location.href = urlstr; return; }
ACTION:ajax
public void uploadFile(){ Map msg = new HashMap(); File destFile = null; try { FileInputStream fis = new FileInputStream(getFile()); //String checkPath = request.getParameter("checkPath"); String rootPath = SaveAndroidSubmitFileUtil.FILE_PATH; String dirPath = Configuration.getString("CHECK_RESULT") + DateUtil.getCurrentDate("yyyyMMdd") + "/"; File dir = new File(rootPath + dirPath); if (!dir.exists()) { dir.mkdirs(); } String[] strs = fileFileName.split("\\."); String fileUUID = StringUtil.getUniqueNo(); String newFileName = fileUUID + "." + strs[1]; String filePath = dirPath + newFileName; destFile = new File(rootPath + dirPath, newFileName); FileUtil.copyFile(file, destFile); String groupUUID = request.getParameter("groupUUID"); msg.put("fileUUID", fileUUID); msg.put("groupUUID", groupUUID); msg.put("fileName", fileFileName); msg.put("type", fileService.getFileType(strs[1])); msg.put("url", filePath); msg.put("is_valid", "1"); fileService.insertFile(msg); msg.put("status", "success"); JSONObject json = JSONObject.fromObject(msg); response.getWriter().write(json.toString()); } catch (Exception e) { e.printStackTrace(); if(destFile!=null && destFile.exists()){ destFile.delete(); } try { msg.put("status", "error"); JSONObject json = JSONObject.fromObject(msg); response.getWriter().write(json.toString()); } catch (IOException e1) { e1.printStackTrace(); } } }
public void deleteFile(){ Map msg = new HashMap(); try { String fileUUID = request.getParameter("fileUUID"); String url = request.getParameter("url"); String fileName = request.getParameter("fileName"); if (fileName != null && fileName.indexOf("%") >= 0) { fileName = Escape.unescape(Escape.unescape(fileName)); } if (url != null && url.indexOf("%") >= 0) { url = Escape.unescape(Escape.unescape(url)); } String rootPath = SaveAndroidSubmitFileUtil.FILE_PATH; File destFile = new File(rootPath + url); if(destFile.exists()){ fileService.deleteFile(fileUUID); destFile.delete(); msg.put("status", "success"); } } catch (Exception e) { e.printStackTrace(); } finally { try { JSONObject json = JSONObject.fromObject(msg); response.getWriter().write(json.toString()); } catch (IOException e1) { e1.printStackTrace(); } } }
public String downLoadFile() { String url = request.getParameter("url"); String fileName = request.getParameter("fileName"); if (fileName != null && fileName.indexOf("%") >= 0) { fileName = Escape.unescape(Escape.unescape(fileName)); } if (url != null && url.indexOf("%") >= 0) { url = Escape.unescape(Escape.unescape(url)); } response.setContentType("images/jpeg"); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); try { // 這個就就是彈出下載對話框的關鍵代碼 response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8")); String rootPath = SaveAndroidSubmitFileUtil.FILE_PATH; File resFile = new File(rootPath + url); InputStream input = new FileInputStream(resFile); ServletOutputStream out = response.getOutputStream(); byte[] buffer = new byte[1024]; int i = 0; while ((i = input.read(buffer)) != -1) { out.write(buffer, 0, i); } input.close(); out.flush(); out.close(); } catch (Exception e) { e.printStackTrace(); } return null; }