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:quxiaohui_0@163.com
'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

%>

(0)

相关推荐

  • 11款基于Javascript的文件管理器

    1. eXtplorer eXtplorer是一个基于PHP与ExtJS开发的文件管理器.你可以用它浏览服务器上的文件与目录.编辑,复制,移动,删除文件.搜索,上传和删除文件.创建新的文件和目录.改变文件的权限属性. 2. Control.Filebrowser (演示地址) 采用Mootools框架开发的文件浏览器控件. 3. FileManager (演示地址) FileManager是一个基于Mootools PHP实现的文件管理器.提供浏览,删除,重命名,移动/复制(支持鼠标拖放操作)和

  • java编写的文件管理器代码分享

    比较适合新手.逻辑上仍然有点问题.可以用于学习java文件操作 下载地址:http://yun.baidu.com/share/link?shareid=4184742416&uk=1312160419 下面是主要的JAVA文件操作代码 FileHelp.java package self.yy.filesystem.fileutil; import android.content.Context; import android.util.Log; import android.widget.T

  • Linux操作系统文件管理器的共享

    在目前最流行的RedHatLinux 9.0中有GNOME和KDE这两个图形桌面.这两个桌面系统中分别有两个不同的文件管理器:在GNOME中是Nautilus(鹦鹉螺)而KDE中是Konqueror,各有不少很实用的特色. 其实不管你登录哪个桌面都可以同时使用这两个文件管理器,方法很简单:在KDE中打开文件管理器Konqueror,找到/usr/bin/目录,将Nautilus文件直接拖到任务栏上,并在弹出的对话框中为它建一个新图标,以后只要点击该图标就可以运行Nautilus文件管理器.同理,

  • 用vbs实现在启动 Windows 资源管理器时打开特定文件夹

    my-script.vbs "c:\scripts" 在文件夹路径的两端必须加双引号吗?本例中不需要.但是,如果路径中有空格,则必须加双引号.以下命令行将不起作用: my-script.vbs c:\documents and settings\kmyer 只要是向脚本传递包含空格的参数,就必须将整个参数括在双引号内(否则无需如此).换句话说: my-script.vbs "c:\documents and settings\kmyer" 这就是命令解释程序的工作方

  • Cmstp 安装或删除“连接管理器”服务配置文件

    Cmstp 安装或删除"连接管理器"服务配置文件.如果在不含可选参数的情况下使用,则 cmstp 会使用对应于操作系统和用户的权限的默认设置来安装服务配置文件. 语法 语法 1: ServiceProfileFileName.exe /q:a /c:"cmstp.exe ServiceProfileFileName.inf [/nf] [/ni] [/ns] [/s] [/su] [/u]" 语法 2: cmstp.exe [/nf] [/ni] [/ns] [/s

  • web文件管理器的后续开发

    web文件管理器的后续开发...     选择自 iuhxq 的 Blog   关键字   web文件管理器的后续开发...  出处 今天看了一下ccopus的DM45,做的很不错,在这之前我也想做一个了,做一个跟windows资源管理器非常类似的程序.看到dm45以后觉得自己还是放弃吧,WEB方式的文件管理无论如何都是在权限允许内操作,而且大家实现的也都差不多,无非是在外观上,易操作上做文章,文件管理本来作用也不是很大,如果是多用户的权限比较难控制,既然别人做了,我想还是不要重复劳动的好,况且

  • Android开发之简单文件管理器实现方法

    本文实例讲述了Android开发之简单文件管理器实现方法.分享给大家供大家参考,具体如下: 这里运用Java I/O.ListActivity.Dialog.Bitmap等实现简单文件管理器,可以查看目录文件,修改文件名,删除文件,打开文件.比较简单,直接看代码: 先看布局文件: layout/main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&q

  • 基于Flowplayer打造一款免费的WEB视频播放器附源码

    Flowplayer 是一个开源(GPL 3的)WEB视频播放器.您可以将该播放器嵌入您的网页中,如果您是开发人员,您还可以自由定制和配置播放器相关参数以达到您要的播放效果.本文主要介绍Flowplayer的使用. 查看演示   源码下载 Flowplayer支持播放flv.swf等流媒体以及图片文件,能够非常流畅的播放视频文件,支持自定义配置和扩展. 1.加载flowplayer.js 在要播放视频的页面的head之间加入flowplayer.js. <script type="text

  • Java web拦截器inteceptor原理及应用详解

    这篇文章主要介绍了java web拦截器inteceptor原理及应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.简介 java里的拦截器提供的是非系统级别的拦截,也就是说,就覆盖面来说,拦截器不如过滤器强大,但是更有针对性. Java中的拦截器是基于Java反射机制实现的,更准确的划分,应该是基于JDK实现的动态代理.它依赖于具体的接口,在运行期间动态生成字节码. 拦截器是动态拦截Action调用的对象,它提供了一种机制可以使开发

  • 浅析Android文件管理器(项目一)

    文件管理器是管理文件的软件,帮助用户处理日常工作,管理储存在本地和网络中的文件.所有文件管理器都提供了基本的操作如创建.打开.查看.编辑.移动和删除文件.许多Android文件管理器还提供了额外功能,如网络连接.应用程序管理.存档和压缩处理.搜索等. 今晚就写了res下面那些文件,因为在编写逻辑的时候如果资源文件夹没有的话,会非常的苦恼的.所以学习的时候总是会先把资源编写完毕,再开始编写逻辑. 然后我自己也总结一下今晚学了什么吧. IDE : Android Studio 惯例,上代码. 先是

  • 使用WEB工具快速提高Android开发效率

    正所谓工欲善其事,必先利其器.学习并应用优秀的轮子,可以让我们跑的更快,走的更远.这里所指的工具是广义的,泛指能帮助我们开发的东西,或者能提高我们效率的东西,包括:开发工具,监测工具,第三方代码库等. 在Google的广大支持下,便捷开发Android程序的Native工具层出不穷.其实Android开发涉及到的范围也不小,一些Web工具有时候也会带来事半功倍的效果.有些甚至是一些native应用无法做到的.本文,将简单列举一下本人正在使用的一些工具,当然也会持续更新. 查找优秀的参考工程 co

  • android文件管理器用法详解

    很久没有写东西了,鉴于某某同学文件管理器不会,这里简单介绍一下,同时写一个demon,参考了网上别人写的代码,自己也学习学习,研究研究. 首先所谓文件管理器,看起来就是一个列表,列表里面是文件夹或者文件,首先把布局写出来,我想在最上方的左边显示文件的路径,右边显示该路径下的文件个数,其实还是一个遍历文件,然后用列表显示出来的问题.下面是ListView,用来显示文件列表.下面是运行的效果图: 主界面的布局文件如下: <?xml version="1.0" encoding=&qu

  • android简易文件管理器实例(列表式文件目录)

    核心代码: File fatherFile = new File(path);File[] files = fatherFile.listFiles(); 效果图: 实现这种列表式的目录,用直接读取目录下文件方法会比较简单,但是如果要根据文件类型从所有文件中分类,那就用ContentProvider去查询数据库方式会更有效率: 实现代码: FileListActivity.java package com.example.d_readandwritetextfile; import java.i

随机推荐