天天看點

檔案管理器html頁面,JSP單頁面網站檔案管理器

這個檔案的開發的設計思想是這樣的。有的web 網站,或者B/S 軟體的客戶,在軟體的安裝調試階段,往往對某些細節有特殊要求,也許,是字型的調整,也許是界面方面的小改動意見。面對這樣的情況,如果使用者沒有開放FTP 功能,則開發和維護人員往往就必須親臨現場做一些很小的調試工作。

即浪費了時間,也浪費了人力物力。

在這樣的情況下,我開發了這個具有檔案管理功能的 JSP 單頁面檔案。它提供了檔案夾的新增,更名,删除;檔案的修改,更名,删除和上傳的功能。基本能滿足在軟體的安裝調試階段,小的修改工作。

為了安全原因,該JSP 頁面提供了簡單的使用者登陸功能。

使用前,把該檔案置于網站檔案,或者B/S 産品的任意目錄下。開放檔案安裝目錄的 讀寫 操作權限。使用者遠端登陸該JSP 頁面,就可以行使管理功能。當安裝維護階段結束以後,請修改檔案安裝目錄的 讀寫 權限,并删除該檔案,以免留下安全隐患。

預設,登陸使用者名為:admin 密碼為:oddworld

開發環境 jakarta-tomcat-4.0.3.exe

注意:因為本軟體的上傳檔案功能必須有 smartupload 元件支援。請把smartupload 置于tomcat 對應檔案夾web-inf 下。如果你支援上傳的元件有所不同,請自行調整。

簡要開發說明:因為本檔案并不複雜,加上本人自我感覺,文檔說明雖然不規範,卻也詳細,是以隻打算簡要的關于一些小細節上做說明。

1. 本檔案進行檔案目錄操作的時候,直接把目錄當參數來傳遞,沒有進行相應的轉換。這是因為在 java 中, “\英文字元”有可能會被認為是轉意字元,而引起在字元處理過程中出現無法預期的問題,是以我認為直接把目錄來作為參數,在操作上比較合理。

2. 本檔案在一些表單的送出方面,使用連接配接,而不是按鈕,是因為 javascript 處理帶 “\”的字元串時,也會有處理轉意字元的可能,是以,為了防止這樣的情況,是以傳遞目錄參數的送出,都使用連接配接形式。

3. strStat,strErr 兩個字元串,貫穿檔案始終,前者為頁面進行何種操作的判斷指令,後者為在所有操作中出錯的資訊提示。

4. 本檔案有可能引起的安全或者其它方面的糾紛,本人不做任何解釋。我隻是把該檔案作為一個免費的工具提供給大家參考,使用。

----------------------------------------------------------------

檔案内容 admin.jsp

copy right by joard Ast

admin.jsp 功能:網站檔案背景管理頁面。

--%>

public static String UnicodeToChinese(String s){

try{

if(s==null||s.equals("")) return "";

String newstring=null;

newstring=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;

newstring=new String(s.getBytes("gb2312"),"ISO8859_1");

return newstring;

}

catch(UnsupportedEncodingException e)

{

return s;

}

}

%>

//重新整理問題

response.setHeader("Pragma","No-cache");

response.setHeader("Cache-Control","no-cache");

response.setDateHeader("Expires", 0);

//自定義登陸用密碼和使用者名

//正确的使用者名

String username="admin"

//正确的密碼

String userpass="oddworld";

//得到系統路徑

ServletContext app=(ServletContext)pageContext.getServletContext();

String strSysPath = app.getRealPath("/");

//處理對象實體路徑

String strDealPath="";

//顯示錯誤資訊

String strErr="";

//代表頁面的顯示狀态,login 是顯示登陸頁面;show 是正常的顯示檔案資訊;edit 是顯示編輯檔案的頁面;editDo 是編輯檔案的寫入操作

;createF 是顯示建立檔案夾的頁面;createFDo 是建立檔案夾的操作;renameFold 是顯示更改檔案夾名稱的頁面;renameFoldDo 是更改文

件夾名稱的操作;delFoldDo 是删除檔案夾的操作;renameFile 是顯示更改檔案名稱的頁面;renameFileDo 是更改檔案名稱的操作;

delFileDo 是删除檔案的操作;uploadFile 是顯示上傳檔案的頁面;uploadFileDo 是上傳檔案的操作;

String strStat="login";

//用于show 狀态下顯示檔案的數組

File[] fileArr=null;

//根據傳遞的路徑參數得到要處理對象的實體路徑

if (request.getParameter("path")==null || request.getParameter("path").equals("")){

strDealPath=strSysPath;

}else{

//得到路徑參數

strDealPath=UnicodeToChinese(request.getParameter("path"));

}

//檢查session 的值是否存在,如果不存在着顯示錯誤資訊

//HttpSession session = request.getSession(false);

if (session.getValue("loginIn")==null || !session.getValue("loginIn").equals("pass"))

{

strStat="login";

strErr="你還沒有登陸或者登陸逾時,請重新登陸!";

}

//建立file 對象,檢查目錄是否存在

File myFile=new File(strDealPath);

//檢驗檔案夾是否存在

if(!myFile.exists()){

strErr="你選擇的檔案夾不存在,請重新選擇!";

}

//根據參數的不同,進行對應的操作

if(request.getParameter("act")==null || request.getParameter("act").equals("") ||

request.getParameter("act").equals("login"))

{

if(request.getParameter("username")!=null && request.getParameter("userpass")!=null)

{

//正确的經過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";

//建立檔案清單數組

fileArr=myFile.listFiles();

}else if(request.getParameter("act").equals("edit"))

{

//編輯檔案内容的頁面

//根據是否有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"))

{

//把修改的内容寫入檔案,并且傳回修改頁面

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 顯示檔案的内容,繼續來做編輯或者

檢視修改的效果

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="缺少修改檔案内容的參數,請重新選擇!";

}

}else

//顯示錯誤資訊

strErr="你選擇的檔案不存在,請重新選擇!";

}else{

strErr="你沒有選擇要編輯的檔案,請重新選擇!";

}

}else if(request.getParameter("act").equals("createF"))

{

//建立新的檔案夾的頁面顯示

strStat="createF";

}else if(request.getParameter("act").equals("createFDo"))

{

//建立新的檔案夾

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="建立新檔案夾失敗!";

}

}

else

{

strErr="指定的檔案夾名稱和現有的檔案夾名稱重複,請重新指定一個新的檔案夾名稱!";

}

}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"))

{

//檔案夾更名操作

//根據參數判斷是否對于檔案夾名稱有更改動作發生

if(request.getParameter("changeDo").equals("true"))

{

//有檔案名,更名發生

try{

String strFileRenameF=strDealPath+UnicodeToChinese(request.getParameter("fold"))+"\\";

File fileRenameF=new File(strFileRenameF);

String strFileRenameToF=strDealPath+UnicodeToChinese(request.getParameter("newFoldName"))+"\\";

File fileRenameToF=new File(strFileRenameToF);

//判斷更名的檔案夾是否存在

if(fileRenameF.exists()){

//判斷新的檔案夾名稱是否與現存的檔案夾重名

if(!fileRenameToF.exists())

{

fileRenameF.renameTo(fileRenameToF);

response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");

return;

}else

{

strErr="指定的檔案夾名稱和現有的檔案夾名稱重複,請重新指定一個檔案夾名稱!";

}

}else{

strErr="要更名的檔案夾不存在,請重新選擇";

}

}catch(Exception e)

{

strErr="檔案夾更名操作錯誤!";

}

}

}else if(request.getParameter("act").equals("renameFile"))

{

strStat="renameFile";

}else if(request.getParameter("act").equals("renameFileDo"))

{

//檔案更名操作

//根據參數判斷是否對于檔案名稱有更改動作發生

if(request.getParameter("changeDo").equals("true"))

{

//有檔案名,更名發生

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()){

//判斷新的檔案名稱是否與現存的檔案重名

if(!fileRenameToFi.exists())

{

fileRenameFi.renameTo(fileRenameToFi);

response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");

return;

}else

{

strErr="指定的檔案名稱和現有的檔案名稱重複,請重新指定一個檔案名稱!";

}

}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="檔案删除操作錯誤!";

}

}else if(request.getParameter("act").equals("uploadFile"))

{

strStat="uploadFile";

}else if(request.getParameter("act").equals("uploadFileDo"))

{

%>

//上傳檔案操作

mySmartUpload.initialize(pageContext);

mySmartUpload.setTotalMaxFileSize(1000000);

try {

mySmartUpload.upload();

mySmartUpload.save(strDealPath);

response.sendRedirect(request.getRequestURI()+"?path="+strDealPath+"&act=show");

return;

} catch (Exception e) {

strErr="檔案上傳出錯,請檢查是否超過1M 的檔案大小限制!";

}

}

%>

out.println(strStat);

%>

Directory Listing For /

size=4 Roman? New ,?times> 網站檔案管理器

size=4 Roman? New ,?times> 

實體路徑:

登入

登入名:

name="username" value="">

密碼:

name="userpass" value="">

}else if(strErr!=""){

%>

操作錯誤

action="?path=&fold=

t.getParameter("fold"))%>&act=renameFoldDo" method="post">

}else  if(strStat.equals("show")){

//正常顯示頁面

%>

目錄清單:

名稱(單擊進入相應目錄)

修改時間

重命名

删除

//顯示表格行的初始顔色

String bgColor="";

//如果不是根目錄,則顯示一個回到上層目錄的連接配接

if(!(strDealPath.equals(strSysPath))){%>

>

for(int i=0 ; i//如果是檔案夾則顯示

if(fileArr[i].isDirectory()){

//顔色隔行變換

bgColor=bgColor.equals("#eeeeee") ? "" : "#eeeeee";

%>

>

  size=4>0href="?path=&act=show" target="_blank" rel="external nofollow" >\\"%>&act=show">

t>

action="?path=&fold=&act=delFoldDo">align=center>

} %>

檔案清單:

名稱(單擊編輯相應檔案)

大小

修改時間

重命名

删除

bgColor="#eeeeee";

if(fileArr.length!=0){

for(int i=0 ; i//如果是檔案則顯示

if(fileArr[i].isFile()){

bgColor=bgColor.equals("#eeeeee") ? "" : "#eeeeee";

%>

   沒有檔案

//正常顯示狀态結束

}else if(strStat.equals("edit")){

//檔案編輯狀态

BufferedReader bufReadIn=new BufferedReader(new

FileReader(UnicodeToChinese(request.getParameter("path"))+UnicodeToChinese(request.getParameter("file"))));

String strContext="";

String strReadLine="";

%>編輯檔案:

action="?path=&file=

t.getParameter("file"))%>&act=editDo" method="post">檔案名稱face=WingDings

size=4>3

while((strReadLine=bufReadIn.readLine())!=null)

out.println(strReadLine);

bufReadIn.close();%>

}else if(strStat.equals("createF")){

%>

建立檔案夾:

action="?path=&act=createFDo" method="post">你要建立的檔案夾在face=WingDings

size=4>0下

建立檔案夾名稱:

}else if(strStat.equals("renameFold"))

{ %>

重命名檔案夾:

action="?path=&fold=

t.getParameter("fold"))%>&act=renameFoldDo" method="post">你要重命名的檔案夾face=WingDings

size=4>0\\")%><

/tt>

重命名的檔案夾名稱:

" maxlength="50"

size="50">

}else if(strStat.equals("renameFile"))

{%>

重命名檔案:

action="?path=&file=

t.getParameter("file"))%>&act=renameFileDo" method="post">你要重命名的檔案face=WingDings

size=4>3<

/td>

重命名的檔案名稱:

" maxlength="50"

size="50">

}else if(strStat.equals("uploadFile")){

%>

上傳檔案:

action="?path=&act=uploadFileDo" method="post"

ENCTYPE="multipart/form-data">你要上傳的檔案在face=WingDings

size=4>0下

選擇上傳的檔案:

}

%>

©版權所有:Joard·Ast  版本: 簡體中文1.00