⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filemanager.jsp

📁 jsp文件管理系统
💻 JSP
📖 第 1 页 / 共 3 页
字号:

  class Writer2Stream extends OutputStream{
    Writer out;
    Writer2Stream (Writer w){
      super();
      out=w;
    }
    public void write(int i) throws IOException{
      out.write(i);
    }
    public void write(byte[] b) throws IOException{
      for (int i=0;i<b.length;i++){
       int n=b[i];
       //Convert byte to ubyte
       n=((n>>>4)&0xF)*16+(n&0xF);
       out.write (n);
      }
    }
    public void write(byte[] b, int off, int len) throws IOException{
      for (int i=off;i<off+len;i++){
        int n=b[i];
        n=((n>>>4)&0xF)*16+(n&0xF);
        out.write (n);
      }
    }
  }

  static Vector expandFileList(String[] files, boolean inclDirs){
    Vector v = new Vector();
    if (files==null) return v;
    for (int i=0;i<files.length;i++) v.add (new File(URLDecoder.decode(files[i])));
    for (int i=0;i<v.size();i++){
      File f = (File) v.get(i);
      if (f.isDirectory()){
        File[] fs = f.listFiles();
        for (int n=0;n<fs.length;n++) v.add(fs[n]);
        if (!inclDirs){
          v.remove(i);
          i--;
        }
      }
    }
    return v;
  }

  static String substr(String s, String search, String replace){
     StringBuffer s2 = new StringBuffer ();
     int i = 0, j = 0;
     int len = search.length();
     while ( j > -1 ){
         j = s.indexOf( search, i );
         if ( j > -1 ){
           s2.append( s.substring(i,j) );
           s2.append( replace );
           i = j + len;
         }
     }
     s2.append( s.substring(i, s.length()) );
     return s2.toString();
  }


  static String getDir (String dir, String name){
    if (!dir.endsWith(File.separator)) dir=dir+File.separator;
    File mv = new File (name);
    String new_dir=null;
    if (!mv.isAbsolute()){
      new_dir=dir+name;
    }
    else new_dir=name;
    return new_dir;
  }
%>

<%
request.setAttribute("dir", request.getParameter("dir"));
String browser_name = request.getRequestURI();

//查看文件
if (request.getParameter("file")!=null){
  File f = new File (request.getParameter("file"));
  BufferedInputStream reader = new BufferedInputStream(new FileInputStream(f));
  int l = f.getName().lastIndexOf(".");
  //判断文件后缀
  if (l>=0){
    String ext = f.getName().substring(l).toLowerCase();
    if (ext.equals(".jpg")||ext.equals(".jpeg")||ext.equals(".jpe"))
      response.setContentType("image/jpeg");
    else if (ext.equals(".gif")) response.setContentType("image/gif");
    else if (ext.equals(".pdf")) response.setContentType("application/pdf");
    else if (ext.equals(".htm")||ext.equals(".html")||ext.equals(".shtml")) response.setContentType("text/html");
    else if (ext.equals(".avi")) response.setContentType("video/x-msvideo");
    else if (ext.equals(".mov")||ext.equals(".qt")) response.setContentType("video/quicktime");
    else if (ext.equals(".mpg")||ext.equals(".mpeg")||ext.equals(".mpe"))
      response.setContentType("video/mpeg");
    else if (ext.equals(".zip")) response.setContentType("application/zip");
    else if (ext.equals(".tiff")||ext.equals(".tif")) response.setContentType("image/tiff");
    else if (ext.equals(".rtf")) response.setContentType("application/rtf");
    else if (ext.equals(".mid")||ext.equals(".midi")) response.setContentType("audio/x-midi");
    else if (ext.equals(".xl")||ext.equals(".xls")||ext.equals(".xlv")||ext.equals(".xla")
            ||ext.equals(".xlb")||ext.equals(".xlt")||ext.equals(".xlm")||ext.equals(".xlk"))
      response.setContentType("application/excel");
    else if (ext.equals(".doc")||ext.equals(".dot")) response.setContentType("application/msword");
    else if (ext.equals(".png")) response.setContentType("image/png");
    else if (ext.equals(".xml")) response.setContentType("text/xml");
    else if (ext.equals(".svg")) response.setContentType("image/svg+xml");
    else response.setContentType("text/plain");
  }
  else response.setContentType("text/plain");
  response.setContentLength((int)f.length());
  out.clearBuffer();
  int i;
  while ((i=reader.read())!=-1) out.write(i);
  reader.close();
  out.flush();
}
//保存所选中文件为zip文件
else if ((request.getParameter("Submit")!=null)&&(request.getParameter("Submit").equals("Save as zip"))){
  Vector v = expandFileList(request.getParameterValues("selfile"), false);
  File dir_file = new File(""+request.getAttribute("dir"));
  int dir_l = dir_file.getAbsolutePath().length();
  response.setContentType ("application/zip");
  response.setHeader ("Content-Disposition", "attachment;filename=\"bagheera.zip\"");
  out.clearBuffer();
  ZipOutputStream zipout = new ZipOutputStream(new Writer2Stream(out));
  zipout.setComment("Created by JSP 文件管理器 1.001");
  for (int i=0;i<v.size();i++){
    File f = (File)v.get(i);
    if (f.canRead()){
      zipout.putNextEntry(new ZipEntry(f.getAbsolutePath().substring(dir_l+1)));
      BufferedInputStream fr = new BufferedInputStream(new FileInputStream(f));
      int b;
      while ((b=fr.read())!=-1) zipout.write(b);
      fr.close();
      zipout.closeEntry();
    }
  }
  zipout.finish();
  out.flush();
}
//下载文件
else if (request.getParameter("downfile")!=null){
  String filePath = request.getParameter("downfile");
  File f = new File(filePath);
  if (f.exists()&&f.canRead()) {
       response.setContentType ("application/octet-stream");
       response.setHeader ("Content-Disposition", "attachment;filename=\""+f.getName()+"\"");
       response.setContentLength((int) f.length());
       BufferedInputStream fileInputStream = new BufferedInputStream(new FileInputStream(f));
       int i;
       out.clearBuffer();
       while ((i=fileInputStream.read()) != -1) out.write(i);
       fileInputStream.close();
       out.flush();
     }
     else {
        out.println("<html><body><h1>文件"+f.getAbsolutePath()+
                    "不存在或者无读权限</h1></body></html>");
     }
}

else{
  if (request.getAttribute("dir")==null){
    request.setAttribute ("dir", application.getRealPath("."));
  }
%>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
    <style type="text/css">
        .login { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #666666; width:320px; }
        .header { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; color: #666666; font-weight: bold; }
        .tableHeader { background-color: #c0c0c0; color: #666666;}
        .tableHeaderLight { background-color: #cccccc; color: #666666;}
        .main { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #666666;}
        .copy { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #999999;}
        .copy:Hover { color: #666666; text-decoration : underline; }
        .button {background-color: #c0c0c0; color: #666666;
                 border-left: 1px solid #999999; border-right: 1px solid #999999;
                 border-top: 1px solid #999999; border-bottom: 1px solid #999999}
        .button:Hover { color: #444444 }
        td { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #666666;}
        A { text-decoration: none; }
        A:Hover { color : Red; text-decoration : underline; }
        BODY { font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; color: #666666;}
    </style>
<script type="text/javascript">
<!--
var check = false;
function dis(){
  check = true;
}

var DOM = 0, MS = 0, OP = 0;
function CheckBrowser() {
 if (window.opera) OP = 1;
 if(document.getElementById) {
   DOM = 1;
 }
 if(document.all && !OP) {
   MS = 1;
 }
}

function selrow (element, i){
  CheckBrowser();
  var erst;
  if ((OP==1)||(MS == 1)) erst = element.firstChild.firstChild;
  else if (DOM == 1) erst = element.firstChild.nextSibling.firstChild;
  //MouseIn
  if (i == 0)
    if (erst.checked == true) element.style.backgroundColor = '#dddddd';
    else element.style.backgroundColor = '#eeeeee';
  //MouseOut
  else if (i == 1){
    if (erst.checked == true) element.style.backgroundColor = '#dddddd';
    else element.style.backgroundColor = '#ffffff';
  }
  //MouseClick
  else if ((i == 2)&&(!check)){
    if (erst.checked == true) element.style.backgroundColor = '#eeeeee';
    else element.style.backgroundColor = '#dddddd';
    erst.click();
  }
  else check = false;
}
//-->
</script>
<%
}
//上传
if ((request.getContentType()!=null)&&(request.getContentType().toLowerCase().startsWith("multipart"))){
  response.setContentType("text/html");
  HttpMultiPartParser parser = new HttpMultiPartParser();
  boolean error = false;
  try{
    Hashtable ht = parser.processData(request.getInputStream(), "-", tempdir);
    if (ht.get("myFile")!=null){
      FileInfo fi = (FileInfo)ht.get("myFile");
      File f = fi.file;
      //把文件从缓冲目录里复制出来
      String path = (String)ht.get("dir");
      if (!path.endsWith(File.separator)) path = path+File.separator;
      if (!f.renameTo(new File(path+f.getName()))){
        request.setAttribute("message", "无法上传文件.");
        error = true;
        f.delete();
      }
    }
    else{
      request.setAttribute("message", "请选中上传文件!");
      error = true;
    }
    request.setAttribute("dir", (String)ht.get("dir"));
  }
  catch (Exception e){
    request.setAttribute("message", "发生如下错误:"+e+". 上传失败!");
    error = true;
  }
  if (!error) request.setAttribute("message", "文件上传成功.");
}
else if (request.getParameter("editfile")!=null){
%>
<title>JSP文件管理器-编辑文件:<%=request.getParameter("editfile")%></title>
</head>
<body>

<%
  String encoding="gb2312"; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -