您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關JSP后臺文件管理源代碼的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
在網(wǎng)上找到個實現(xiàn)JSP后臺文件管理的,就是Web端瀏覽器實現(xiàn)類似文件管理的功能(多了上傳文件)。有源代碼提供,就是寫得亂了點。經(jīng)整理改進,增加了文件下載功能,以及對大文件上傳的支持(用commons.fileupload包,解決了smartupload包傳輸大文件就報錯的Bug)。不過還沒改下載(有時間改過來)。
<%-- 根據(jù)oddWorld 網(wǎng)站文件管理系統(tǒng)(簡體中文版)修改 copy right by joard Ast,kliis admin.jsp 功能:網(wǎng)站文件后臺管理頁面。 admin.jsp 特點:單頁面實現(xiàn)服務器后臺文件的各項管理 轉(zhuǎn)載敬請注明出處! --%> <%@ page contentType="text/html;charset=gb2312" %> <%@ page import="java.io.*" %> <%@ page import="org.apache.commons.fileupload.*" %> <%@ page import="java.util.Date" %> <%@ page import="java.util.*" %> <%@ page import="com.jspsmart.upload.SmartUpload" %> <%@ page import="javax.servlet.http.HttpSession" %> <%@ page import="javax.servlet.http.HttpServletRequest" %> <%@ page import="java.lang.reflect.*" %> <% //中文字符轉(zhuǎn)換%> <%! public static String UnicodeToChinese(String s) { try{ if(s==null || s.equals("")) return ""; String newstring=null; newnewstring=new String(s.getBytes("ISO8859_1"),"gb2312"); return newstring; } catch(UnsupportedEncodingException e) { return s; } } public static String ChineseToUnicode(String s) { try { if(s==null||s.equals("")) return ""; String newstring=null; newnewstring=new String(s.getBytes("gb2312"),"ISO8859_1"); return newstring; } catch(UnsupportedEncodingException e) { return s; } } public String getTime(String formats) { //取得自定義格式的時間 ("yyyyMM") ("yyyy_MM_dd_HHmmssSSS") 大S為毫秒 HH為24小時制,hh為12小時制 return new java.text.SimpleDateFormat(formats).format(java.util.Calendar.getInstance().getTime()); } %> <% //刷新問題 response.setHeader("Pragma","No-cache"); response.setHeader("Cache-Control","no-cache"); response.setDateHeader("Expires", 0); //自定義登陸用密碼和用戶名 //正確的用戶名,可以另外添加連接數(shù)據(jù)庫 String username="admin"; //正確的密碼 String userpass="admin"; //得到系統(tǒng)路徑,路徑得到后加一杠,表示文件夾下 ServletContext app=(ServletContext)pageContext.getServletContext(); String strSysPath = app.getRealPath("/"); //處理對象物理路徑 String strDealPath=""; //顯示錯誤信息 String strErr=""; //代表頁面的顯示狀態(tài) //login 是顯示登陸頁面 //show 是正常的顯示文件信息; //edit 是顯示編輯文件的頁面; //editDo是編輯文件的寫入操作 //createF 是顯示創(chuàng)建文件夾的頁面; //createFDo 是創(chuàng)建文件夾的操作; //renameFold 是顯示更改文件夾名稱的頁面; //renameFoldDo是更改文件夾名稱的操作; //delFoldDo 是刪除文件夾的操作; //renameFile 是顯示更改文件名稱的頁面; //renameFileDo 是更改文件名稱的操作; //delFileDo 是刪除文件的操作; //uploadFile 是顯示上傳文件的頁面; //uploadFileDo 是上傳文件的操作; //添加的功能 uploadFile是顯示下載文件的頁面 //uploadFileDo是下載文件的操作 String strStat="login"; //用于show 狀態(tài)下顯示文件的數(shù)組 File[] fileArr=null; //根據(jù)傳遞的路徑參數(shù)得到要處理對象的物理路徑 if (request.getParameter("path")==null || request.getParameter("path").equals("")) { strDealPath=strSysPath; //如果從網(wǎng)頁傳來的路徑為空,則默認采用 } else { //得到路徑參數(shù) strDealPath=UnicodeToChinese(request.getParameter("path")); } //檢查session 的值是否存在,如果不存在著顯示錯誤信息 //HttpSession session = request.getSession(false); if (session.getValue("loginIn")==null || !session.getValue("loginIn").equals("pass")) { strStat="login"; strErr="你還沒有登陸或者登陸超時,請重新登陸!"; } //創(chuàng)建file 對象,檢查目錄是否存在 File myFile=new File(strDealPath); //檢驗文件夾是否存在 if(!myFile.exists()) { strErr="你選擇的文件夾不存在,請重新選擇!"; } //根據(jù)參數(shù)的不同,進行對應的操作 if(request.getParameter("act")==null || request.getParameter("act").equals("") || request.getParameter("act").equals("login") ) { if(request.getParameter("username")!=null && request.getParameter("userpass")!=null) { //正確的經(jīng)過MD5 加密的密碼 //String userpass="OEEO99107DC8C1EE2E06666B965601EF"; if( request.getParameter("username").equals(username) && (request.getParameter("userpass")).equals(userpass) ) { session.putValue("loginIn","pass"); response.sendRedirect(request.getRequestURI()+"?act=show"); } } else { strStat="login"; strErr="你還沒有登陸或者登陸超時,請重新登陸!"; } } else if(request.getParameter("act").equals("show")) { //缺省,頁面正常顯示文件的信息 statStat="show" strStat="show"; //創(chuàng)建文件列表數(shù)組 fileArr=myFile.listFiles(); } else if(request.getParameter("act").equals("edit")) { //編輯文件內(nèi)容的頁面 //根據(jù)是否有request.getParameter("file") //以及相應文件是否存在,如果有,則進行編輯操作,如果沒有,則顯示錯誤提示信息 if (!(request.getParameter("file")==null || request.getParameter("file").equals(""))) { File fileEdit= new File(UnicodeToChinese(request.getParameter("path")) +UnicodeToChinese(request.getParameter("file"))); if(fileEdit.exists()) //文件編輯操作,實際就是更改頁面的顯示,用一個textarea 顯示文件的信息,來做編輯 strStat="edit"; else //顯示錯誤信息 strErr="你選擇的文件不存在,請重新選擇!"; }else { strErr="你沒有選擇要編輯的文件,請重新選擇!"; } }else if(request.getParameter("act").equals("editDo")) { //把修改的內(nèi)容寫入文件,并且返回修改頁面 if (!(request.getParameter("file")==null || request.getParameter("file").equals(""))) { File fileEdit= new File(UnicodeToChinese(request.getParameter("path")) +UnicodeToChinese(request.getParameter("file"))); if(fileEdit.exists()) { //文件編輯操作,實際就是在修改文件內(nèi)容以后,再于頁面上用一個textarea 顯示文件的內(nèi)容, //繼續(xù)來做編輯或者查看修改的效果 if(!(request.getParameter("fileData")==null)) { try{ PrintWriter pwEdit =null; pwEdit=new PrintWriter(new FileOutputStream(UnicodeToChinese(request.getParameter("path")) +UnicodeToChinese(request.getParameter("file")))); pwEdit.println(UnicodeToChinese(request.getParameter("fileData"))); pwEdit.close(); response.sendRedirect(request.getRequestURI()+"?path="+ UnicodeToChinese(request.getParameter("path")) +"&file="+UnicodeToChinese(request.getParameter("file")) +"&act=edit"); return; }catch(Exception e) { strErr="文件寫入錯誤,請重新選擇!"; } } else { strErr="缺少修改文件內(nèi)容的參數(shù),請重新選擇!"; } }else //顯示錯誤信息 strErr="你選擇的文件不存在,請重新選擇!"; }else { strErr="你沒有選擇要編輯的文件,請重新選擇!"; } }else if(request.getParameter("act").equals("createF")) { //創(chuàng)建新的文件夾的頁面顯示 strStat="createF"; }else if(request.getParameter("act").equals("createFDo")) { //創(chuàng)建新的文件夾 String strFoldName=strDealPath+UnicodeToChinese(request.getParameter("foldName")).trim()+"\\"; //out.println(strFoldName); //out.close(); File fileCreateF=new File(strFoldName); if(!fileCreateF.exists()) { try{ fileCreateF.mkdir(); response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show"); return; }catch(Exception e) { strErr="創(chuàng)建新文件夾失敗!"; } } else { strErr="指定的文件夾名稱和現(xiàn)有的文件夾名稱重復,請重新指定一個新的文件夾名稱!"; } } else if(request.getParameter("act").equals("delFoldDo")) { //刪除操作 try{ String strFileDelF=strDealPath+UnicodeToChinese(request.getParameter("fold"))+"\\"; File fileDelF=new File(strFileDelF); if(fileDelF.exists()) { File[] fileArrCheck=fileDelF.listFiles(); if(!(fileArrCheck.length>0)) { fileDelF.delete(); response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show"); return; }else { strErr="文件夾下面還包含著文件,請把文件都刪除,再刪除文件夾"; } }else { strErr="要刪除的文件夾不存在,請重新選擇"; } }catch(Exception e) { strErr="文件夾刪除操作錯誤!"; } } else if(request.getParameter("act").equals("renameFold")) { strStat="renameFold"; } else if(request.getParameter("act").equals("renameFoldDo")) { //文件夾更名操作 //根據(jù)參數(shù)判斷是否對于文件夾名稱有更改動作發(fā)生 if(request.getParameter("changeDo").equals("true")) { //有文件名,更名發(fā)生 try{ String strFileRenameF=strDealPath+UnicodeToChinese(request.getParameter("fold"))+"\\"; File fileRenameF=new File(strFileRenameF); //先用strFileRenameF獲得當前的文件路徑 String strFileRenameToF=strDealPath+UnicodeToChinese(request.getParameter("newFoldName"))+"\\"; File fileRenameToF=new File(strFileRenameToF); //判斷更名的文件夾是否存在 if(fileRenameF.exists()) { //判斷新的文件夾名稱是否與現(xiàn)存的文件夾重名 if(!fileRenameToF.exists()) { fileRenameF.renameTo(fileRenameToF); response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show"); return; }else { strErr="指定的文件夾名稱和現(xiàn)有的文件夾名稱重復,請重新指定一個文件夾名稱!"; } }else { strErr="要更名的文件夾不存在,請重新選擇"; } }catch(Exception e) { strErr="文件夾更名操作錯誤!"; } } } else if(request.getParameter("act").equals("renameFile")) { strStat="renameFile"; } else if(request.getParameter("act").equals("renameFileDo")) { //文件更名操作 //根據(jù)參數(shù)判斷是否對于文件名稱有更改動作發(fā)生 if(request.getParameter("changeDo").equals("true")) { //有文件名,更名發(fā)生 try{ String strFileRenameFi=strDealPath+UnicodeToChinese(request.getParameter("file")); File fileRenameFi=new File(strFileRenameFi); String strFileRenameToFi=strDealPath+UnicodeToChinese(request.getParameter("newFileName")); File fileRenameToFi=new File(strFileRenameToFi); //判斷更名的文件是否存在 if(fileRenameFi.exists()) { //判斷新的文件名稱是否與現(xiàn)存的文件重名 if(!fileRenameToFi.exists()) { fileRenameFi.renameTo(fileRenameToFi); response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show"); return; }else { strErr="指定的文件名稱和現(xiàn)有的文件名稱重復,請重新指定一個文件名稱!"; } }else { strErr="要更名的文件不存在,請重新選擇"; } }catch(Exception e) { strErr="文件更名操作錯誤!"; } } } else if(request.getParameter("act").equals("delFileDo")) { //刪除操作 try{ String strFileDelFi=strDealPath+UnicodeToChinese(request.getParameter("file")); File fileDelFi=new File(strFileDelFi); if(fileDelFi.exists()) { fileDelFi.delete(); response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show"); return; } else { strErr="要刪除的文件不存在,請重新選擇"; } }catch(Exception e) { strErr="文件刪除操作錯誤!"; } } //上傳文件,用到smartupload組件 else if(request.getParameter("act").equals("uploadFile")) { strStat="uploadFile"; } else if(request.getParameter("act").equals("uploadFileDo")) { %> <% //上傳文件操作 //mySmartUpload.initialize(pageContext); //mySmartUpload.setTotalMaxFileSize(100000000); //try //{ // mySmartUpload.upload(); // mySmartUpload.save(strDealPath); // response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show"); // return; //} catch (Exception e) //{ // strErr="文件上傳出錯,請檢查是否超過100M 的文件大小限制!"; //} //重新用commons.fileupload包傳輸文件 %> <% String type="upload"; String fileExt=null; long fileSize=0; int count=0; String fileName=getTime("yyyyMMdd_HHmmssSSS"); String dateDir=getTime("yyyyMMdd")+"/"; String path=getServletContext().getRealPath("/")+type; File dir=new File(path); if(!dir.exists()) { dir.mkdir(); } pathpath=path+"/"+dateDir; dir=new File(path); if(!dir.exists()) { dir.mkdir(); } try{ DiskFileUpload fu=new DiskFileUpload(); fu.setSizeMax(1024*1024*500); // 設置允許用戶上傳文件大小,單位:字節(jié) fu.setSizeThreshold(1024); // 設置最多只允許在內(nèi)存中存儲的數(shù)據(jù),單位:字節(jié) fu.setRepositoryPath("C:\\"); //設置一旦文件大小超過getSizeThreshold()的值時數(shù)據(jù)存放在硬盤的臨時文件夾 List fileItems=fu.parseRequest(request); //開始讀取上傳信息 Iterator iter=fileItems.iterator(); // 依次處理每個上傳的文件 while(iter.hasNext()) { FileItem item=(FileItem) iter.next(); if(!item.isFormField()) { //判斷是否是文件框,忽略其他不是文件域的所有表單信息 count++; fileExt=item.getName(); //取得文件名,是客戶端的文件路徑,暈 fileSize=item.getSize(); if(fileExt==null||fileExt.equals("")||fileSize==0) out.print(count+" : <hr size=1>"); else { fileExtfileExt=fileExt.substring(fileExt.lastIndexOf("\\")+1); //取文件擴展名 File files=new File(path,fileExt); item.write(files); //以時間命名 out.print(count+" : "+files.getName()+"<hr size=1>"); response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show"); //out.print(fileExt); } } } }catch(Exception e){ out.print("Error!"); } } else if(request.getParameter("act").equals("downloadFile")) { strStat="downloadFile"; } else if(request.getParameter("act").equals("downloadFileDo")) { %>
關于“JSP后臺文件管理源代碼的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。