溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JSP后臺文件管理源代碼的示例分析

發(fā)布時間:2021-11-22 10:03:12 來源:億速云 閱讀:153 作者:小新 欄目:編程語言

這篇文章將為大家詳細講解有關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)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

jsp
AI