web文件管理器的后续开发

  web文件管理器的后续开发。。。     选择自 iuhxq 的 Blog

  关键字   web文件管理器的后续开发。。。

  出处

  今天看了一下ccopus的DM45,做的很不错,在这之前我也想做一个了,做一个跟windows资源管理器非常类似的程序。看到dm45以后觉得自己还是放弃吧,WEB方式的文件管理无论如何都是在权限允许内操作,而且大家实现的也都差不多,无非是在外观上,易操作上做文章,文件管理本来作用也不是很大,如果是多用户的权限比较难控制,既然别人做了,我想还是不要重复劳动的好,况且也不见得能做的好。下面的代码贴出来留个纪念,实现了文件的本地排序。但目录之间的层次还没有搞好。有兴趣的可以拿去参考,理论上应该可以实现跟windows资源管理器极类似的界面和操作方式。整个界面都采取无刷新方式。用XMLHTTP来执行后台代码,用JS来修改前台显示。这里体现了一种思想,希望对初学者能有个帮助。

  代码如下:

  <title>WEB文件管理器2.0版 http://asp2004.net</title>

  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

  <style type="text/css">

  <!--

  a {

  font-size: 9pt;

  color: #3300CC;

  text-decoration: none;

  }

  body {

  font-size: 9pt;

  margin-left: 0px;

  margin-top: 0px;

  margin-right: 0px;

  margin-bottom: 0px;

  line-height: 20px;

  background-color: #EEEEEE;

  }

  td {

  font-size: 9pt;

  line-height: 20px;

  }

  .tx {

  border-color:#000000;

  border-left-width: 0px;

  border-top-width: 0px;

  border-right-width: 0px;

  border-bottom-width: 1px;

  font-size: 9pt;

  background-color: #EEEEEE;

  }

  .tx1 {

  font-size: 9pt;

  border: 1px solid;

  border-color:#000000;

  color: #000000;

  }

  -->

  </style>

  <%

  '版权声明:本代码仅供学习研究之用,本人不对因使用本程序而造成的任何后果负责。未经作者书面许可不得用于商业用途。

  'QQ:103895

  'email:[email protected]

  'http://asp2004.net

  Server.ScriptTimeout = 999

  action = Request("action")

  temp = Split(Request.ServerVariables("URL"), "/")

  url = temp(UBound(temp))

  Const pass = ""'登陆密码

  '登陆验证

  Set fso = CreateObject("Scripting.FileSystemObject")

  Path = Request("foldername")

  If Path = "" Then Path = server.MapPath("./")

  ShowFolderList(Path)

  Set fso = Nothing

  '列出文件和文件夹

  Function ShowFolderList(folderspec)

  temp = Request.ServerVariables("HTTP_REFERER")

  temp = Left(temp, Instrrev(temp, "/"))

  temp1 = Len(folderspec) - Len(server.MapPath("./")) -1

  If temp1>0 Then

  temp1 = Right(folderspec, CInt(temp1)) + "\"

  ElseIf temp1 = -1 Then

  temp1 = ""

  End If

  tempurl = temp + Replace(temp1, "\", "/")

  uppath = "./" + Replace(temp1, "\", "/")

  upfolderspec = fso.GetParentFolderName(folderspec&"\")

  Set f = fso.GetFolder(folderspec)

  %>

  <script language="javascript">

  function File(Name, Size, Type, DateCreated, DateLastAccessed, DateLastModified, Attributes)

  {

  this.Name = Name;

  this.Size = Size;

  this.Type = Type;

  this.DateCreated = DateCreated;

  this.DateLastAccessed = DateLastAccessed;

  this.DateLastModified = DateLastModified;

  this.Attributes = Attributes;

  }

  function Tree(id, name)

  {

  this.id = id;

  this.name = name;

  this.root = new Array();

  this.length = 0;

  this.Add = function(file)

  {

  this.root.push(file);

  this.length += 1;

  }

  this.max = function(f1, f2, field)

  {

  switch( field )

  {

  case "Name":

  return f1.Name.toLowerCase()>f2.Name.toLowerCase()? true:false;

  case "Size":

  return f1.Size>f2.Size? true:false;

  case "Type":

  //if (field == '???t?D') return false;

  return f1.Type>f2.Type? true:false;

  case "DateCreated":

  return f1.DateCreated>f2.DateCreated? true:false;

  case "DateLastAccessed":

  return f1.DateLastAccessed>f2.DateLastAccessed? true:false;

  case "DateLastModified":

  return f1.DateLastModified>f2.DateLastModified? true:false;

  case "Attributes":

  return f1.Attributes>f2.Attributes? true:false;

  default:

  return false;

  }

  }

  this.sort=function(field, order)

  {

  //order:desc asc

  //field:Name Size

  var len = this.root.length;

  if( len < 2 ) return;

  var tmp;

  for(var i=0; i<len-1; i++)

  {

  for(var j=i+1; j<len; j++)

  {

  if( order == "desc")

  {

  if( !this.max( this.root[i], this.root[j], field ) )

  {

  tmp = this.root[i];

  this.root[i] = this.root[j];

  this.root[j] = tmp;

  }

  }

  else if ( order == "asc")

  {

  if( this.max( this.root[i], this.root[j], field ) )

  {

  tmp = this.root[i];

  this.root[i] = this.root[j];

  this.root[j] = tmp;

  }

  }

  }

  }

  }

  }

  function fieldcode(field)

  {

  if (order == 'desc')

  {

  order = 'asc';

  }

  else

  {

  order = 'desc';

  }

  tree.sort(field, order);

  }

  function show()

  {

  //for (var i=0;i<form1.elements.length;i++){var e = form1.elements[i];if (e.type == "checkbox")e.checked = form1.chkall.checked;}

  str = '<table width="100%" border="0" cellspacing="0" cellpadding="0">\

  <tr bgcolor="#EEEEEE">\

  <td><div align="center">操作<input type="checkbox" name="chkall" onclick=""></div></td>\

  <td><div align="center"><a onclick="fieldcode(\'Name\');show();" href=#>文件名</a></div></td>\

  <td><div align="center"><a onclick="fieldcode(\'Size\');show();" href=#>大小</a></div></td>\

  <td><div align="center"><a onclick="fieldcode(\'Type\');show();" href=#>类型</a></div></td>\

  <td><div align="center"><a onclick="fieldcode(\'DateCreated\');show();" href=#>创建时间</a></div></td>\

  <td><div align="center"><a onclick="fieldcode(\'DateLastAccessed\');show();" href=#>上次访问时间</a></div></td>\

  <td><div align="center"><a onclick="fieldcode(\'DateLastModified\');show();" href=#>上次修改时间</a></div></td>\

  <td><div align="center"><a onclick="fieldcode(\'Attributes\');show();" href=#>属性</a></div></td>\

  </tr>';

  var f;

  for(i=0;i<tree.length;i++)

  {

  f = tree.root[i];

  str += '<tr bgcolor="#EEEEEE" onmouseover=this.bgColor=\'#F3F6FA\'; onmouseout=this.bgColor=\'#EEEEEE\';>\

  <td><center><input type="checkbox" name="f" value="'+tree.id+"\\\\"+f.Name+'"></center></td>\

  <td><a href="'+f.url+'">'+f.Name+'</a></td>\

  <td>'+f.Size+'</td>\

  <td>'+f.Type+'</td>\

  <td>'+f.DateCreated+'</td>\

  <td>'+f.DateLastAccessed+'</td>\

  <td>'+f.DateLastModified+'</td>\

  <td>'+f.Attributes+'</td>\

  </tr>';

  }

  str += '</table>';

  eval(list).innerHTML = str;

  }

  var field = 'Name';

  var order = 'desc';

  var str;

  </script>

  <body onLoad="show()">

  <form name="form1" method=post action="">

  <span id="list"></span>

  </form>

  </body>

  <%

  Response.Write("<script language=javascript>"&vbcrlf)

  Response.Write("var tree = new Tree('"&jscode(f.path)&"','"&jscode(f.name)&"');"&vbcrlf)

  Set fc = f.SubFolders

  For Each f1 in fc

  Response.Write("tree.Add(new File('"&f1.name&"',"&f1.size&",'"&f1.Type&"','"&f1.DateCreated&"','"&f1.DateLastAccessed&"','"&f1.DateLastModified&"','"&f1.Attributes&"'));"&vbcrlf)

  Next

  set fc = f.Files

  For Each f1 in Fc

  Response.Write("tree.Add(new File('"&f1.name&"',"&f1.size&",'"&f1.Type&"','"&f1.DateCreated&"','"&f1.DateLastAccessed&"','"&f1.DateLastModified&"','"&f1.Attributes&"'));"&vbcrlf)

  Next

  Response.Write("</script>")

  End Function

  function jscode(s)

  jscode = replace(s,"\","\\\\")

  end function

  %>