web文件管理器的后续开发
2018-09-06 12:42
web文件管理器的后续开发。。。选择自iuhxq的Blog
关键字web文件管理器的后续开发。。。
出处
今天看了一下ccopus的DM45,做的很不错,在这之前我也想做一个了,做一个跟windows资源管理器非常类似的程序。看到dm45以后觉得自己还是放弃吧,WEB方式的文件管理无论如何都是在权限允许内操作,而且大家实现的也都差不多,无非是在外观上,易操作上做文章,文件管理本来作用也不是很大,如果是多用户的权限比较难控制,既然别人做了,我想还是不要重复劳动的好,况且也不见得能做的好。下面的代码贴出来留个纪念,实现了文件的本地排序。但目录之间的层次还没有搞好。有兴趣的可以拿去参考,理论上应该可以实现跟windows资源管理器极类似的界面和操作方式。整个界面都采取无刷新方式。用XMLHTTP来执行后台代码,用JS来修改前台显示。这里体现了一种思想,希望对初学者能有个帮助。
代码如下:
<title>WEB文件管理器2.0版
<metahttp-equiv=Content-Typecontent=text/html;charset=gb2312>
<styletype=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:1pxsolid;
border-color:#000000;
color:#000000;
}
-->
</style>
<%
版权声明:本代码仅供学习研究之用,本人不对因使用本程序而造成的任何后果负责。未经作者书面许可不得用于商业用途。
QQ:103895
Server.ScriptTimeout=999
action=Request(action)
temp=Split(Request.ServerVariables(URL),/)
url=temp(UBound(temp))
Constpass=登陆密码
登陆验证
Setfso=CreateObject(Scripting.FileSystemObject)
Path=Request(foldername)
IfPath=ThenPath=server.MapPath(./)
ShowFolderList(Path)
Setfso=Nothing
列出文件和文件夹
FunctionShowFolderList(folderspec)
temp=Request.ServerVariables(HTTP_REFERER)
temp=Left(temp,Instrrev(temp,/))
temp1=Len(folderspec)-Len(server.MapPath(./))-1
Iftemp1>0Then
temp1=Right(folderspec,CInt(temp1))+\
ElseIftemp1=-1Then
temp1=
EndIf
tempurl=temp+Replace(temp1,\,/)
uppath=./+Replace(temp1,\,/)
upfolderspec=fso.GetParentFolderName(folderspec&\)
Setf=fso.GetFolder(folderspec)
%>
<scriptlanguage=javascript>
functionFile(Name,Size,Type,DateCreated,DateLastAccessed,DateLastModified,Attributes)
{
this.Size=Size;
this.Type=Type;
this.DateCreated=DateCreated;
this.DateLastAccessed=DateLastAccessed;
this.DateLastModified=DateLastModified;
this.Attributes=Attributes;
}
functionTree(id,name)
{
this.id=id;
this.name=name;
this.root=newArray();
this.length=0;
this.Add=function(file)
{
this.root.push(file);
this.length+=1;
}
this.max=function(f1,f2,field)
{
switch(field)
{
caseName:
returnf1.Name.toLowerCase()>f2.Name.toLowerCase()?true:false;
caseSize:
returnf1.Size>f2.Size?true:false;
caseType:
//if(field==???t?D)returnfalse;
returnf1.Type>f2.Type?true:false;
caseDateCreated:
returnf1.DateCreated>f2.DateCreated?true:false;
caseDateLastAccessed:
returnf1.DateLastAccessed>f2.DateLastAccessed?true:false;
caseDateLastModified:
returnf1.DateLastModified>f2.DateLastModified?true:false;
caseAttributes:
returnf1.Attributes>f2.Attributes?true:false;
default:
returnfalse;
}
}
this.sort=function(field,order)
{
//order:descasc
//field:NameSize
varlen=this.root.length;
if(len<2)return;
vartmp;
for(vari=0;i<len-1;i++)
{
for(varj=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;
}
}
elseif(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;
}
}
}
}
}
}
functionfieldcode(field)
{
if(order==desc)
{
order=asc;
}
else
{
order=desc;
}
tree.sort(field,order);
}
functionshow()
{
//for(vari=0;i<form1.elements.length;i++){vare=form1.elements[i];if(e.type==checkbox)e.checked=form1.chkall.checked;}
str=<tablewidth=100%border=0cellspacing=0cellpadding=0>\
<trbgcolor=#EEEEEE>\
<td><divalign=center>操作<inputtype=checkboxname=chkallonclick=></div></td>\
<td><divalign=center><aonclick=fieldcode(\Name\);show();href=#>文件名</a></div></td>\
<td><divalign=center><aonclick=fieldcode(\Size\);show();href=#>大小</a></div></td>\
<td><divalign=center><aonclick=fieldcode(\Type\);show();href=#>类型</a></div></td>\
<td><divalign=center><aonclick=fieldcode(\DateCreated\);show();href=#>创建时间</a></div></td>\
<td><divalign=center><aonclick=fieldcode(\DateLastAccessed\);show();href=#>上次访问时间</a></div></td>\
<td><divalign=center><aonclick=fieldcode(\DateLastModified\);show();href=#>上次修改时间</a></div></td>\
<td><divalign=center><aonclick=fieldcode(\Attributes\);show();href=#>属性</a></div></td>\
</tr>;
varf;
for(i=0;i<tree.length;i++)
{
f=tree.root[i];
str+=<trbgcolor=#EEEEEEonmouseover=this.bgColor=\#F3F6FA\;onmouseout=this.bgColor=\#EEEEEE\;>\
<td><center><inputtype=checkboxname=fvalue=+tree.id+\\\\+f.Name+></center></td>\
<td><ahref=+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>;
}
varfield=Name;
varorder=desc;
varstr;
</script>
<bodyonLoad=show()>
<formname=form1method=postaction=>
<spanid=list></span>
</form>
</body>
<%
Response.Write(<scriptlanguage=javascript>&vbcrlf)
Response.Write(vartree=newTree(&jscode(f.path)&,&jscode(f.name)&);&vbcrlf)
Setfc=f.SubFolders
ForEachf1infc
Response.Write(tree.Add(newFile(&f1.name&,&f1.size&,&f1.Type&,&f1.DateCreated&,&f1.DateLastAccessed&,&f1.DateLastModified&,&f1.Attributes&));&vbcrlf)
Next
setfc=f.Files
ForEachf1inFc
Response.Write(tree.Add(newFile(&f1.name&,&f1.size&,&f1.Type&,&f1.DateCreated&,&f1.DateLastAccessed&,&f1.DateLastModified&,&f1.Attributes&));&vbcrlf)
Next
Response.Write(</script>)
EndFunction
functionjscode(s)
jscode=replace(s,\,\\\\)
endfunction
%>
上一篇:在ASP网站设计中表单验证
下一篇:常见的错误及其解决方法