转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
用XML+FSO+JS实现服务器端文件的选择         ★★★★

用XML+FSO+JS实现服务器端文件的选择

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1359 更新时间:2009/4/23 11:18:38
     首先在服务器端先创建一个程序可以生成XML文件,以返回客户端,(getfolder.asp)
  <%
  'written by Linzhang Chen ,2003-4-20
  ' 转载请注明出处和保留此版权信息
  response.write "<?xml version=""1.0"" encoding=""GB2312""?>"&chr(13)
  response.write "<mediafile>"&chr(13)
  folders=request("folder")
  if folders="/" then
  folders=""
  end if
  dim count
  count=0
  folders=replace(folders,"..","")
  basefolder="../media/"'基准的文件夹路径
  newfolder=basefolder&folders
  Set fso =server.CreateObject("Scripting.FileSystemObject")
  set f=fso.getfolder(server.mappath(newfolder))
  set sf=f.subfolders
  for each fd in sf'返回指定路径下面的文件夹列表
  response.write "<file>"&chr(13)
  response.write "<ftype>folder</ftype>"&chr(13)
  response.write "<fname>"&fd.name&"</fname>"&chr(13)
  response.write "</file>"&chr(13)
  count=count+1
  next
  set sf=nothing
  set ff=f.Files
  for each fi in ff
  fname=fi.name
  if instr("asf,wma,wmv",lcase(mid(fname,instrrev(fname,".")+1)))>0 then'设定允许返回的文件类型,防止源码泄露
  response.write "<file>"&chr(13)
  response.write "<ftype>file</ftype>"&chr(13)
  response.write "<fname>"&fname&"</fname>"&chr(13)
  response.write "</file>"&chr(13)
  count=count+1
  end if
  next
  '如果该目录下没有文件,就发一个空元素
  if count=0 then
  response.write "<file>"&chr(13)
  response.write "<ftype>empty</ftype>"&chr(13)
  response.write "<fname>0</fname>"&chr(13)
  response.write "</file>"&chr(13)
  end if
  response.write "</mediafile>"
  set ff=nothing
  set f=nothing
  set fso=nothing
  %>
  下面就是客户端的JS的功夫了(selectfile.asp)
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  <HTML>
  <HEAD>
  <TITLE> 选择视频文件 </TITLE>
  <style>
  td{font-size:9pt}
  select{width:210}
  .s2{width:250}
  </style>
  <SCRIPT LANGUAGE="JavaScript">
  <!--
  /*written by Linzhang Chen ,2003-4-20
   转载请注明出处和保留此版权信息 */
  
  //预装载图片
   var imgback = new Image();
  imgback.src = "images/arrow.gif";
   var imgbackgray = new Image();
  imgbackgray.src = "images/grayarrow.gif";
   var imgfolder = new Image();
  imgfolder.src = "images/folder.gif";
   var imggrayfolder = new Image();
  imggrayfolder.src = "images/grayfolder.gif";
  //历史记录数组栈
  var arrhistory=new Array();
  var hisi=0;
  //用来确定要返回文件名
  function check()
  {
  if (document.all.filename.value=="")
  {
  alert("请先选择文件");
  return false;
  }
  else
  {
  window.returnValue =document.f1.folder.value+document.all.filename.value;
  window.close();
  }
  }
  //取得XML文件的内容
  function getuserlist(url)
  { var oXMLDoc = new ActiveXObject('MSXML');
   oXMLDoc.url = url;
   var ooRoot=oXMLDoc.root;
  return ooRoot;
   }
  //当选中一个文件时,把这个值返回给文本框
  function addfile(txt)
  {
  document.all.filename.value=txt;
  }
  
  var first=1;//定义一个全局变量
  
  function userlist(folders,ti)//列出所选框
  {document.f1.folder.value=folders;
  filebox.document.body.innerHTML="正在加载文件,请稍侯...";
   var strshow="";
   var timeoutid=null;
   var newfolder="";
   var arrfolder=new Array();
   var arrff=new Array();
   var blankstr="";
   var oItem;
   //确定历史状态
   hisi+=ti;
   arrhistory[hisi]=folders;
   if (hisi==0)
   {
   arrow.innerHTML="<img src=\"images/grayarrow.gif\">";
   }
   else
   {
   arrow.innerHTML="<img src=\"images/arrow.gif\" border=0 style=\"cursor:hand\" onclick=\"userlist('"+arrhistory[hisi-1]+"',-1)\" onmouseover=\"this.src='images/arrow_over.gif'\" onmouseout=\"this.src='images/arrow.gif'\">";
   }
   //确定当前的文件夹
   if (document.f1.folder.value=="")
   {
   folderid.innerHTML="<img src=\"images/grayfolder.gif\">"
   }
   else
   {newsfolder=checkfolder(document.f1.folder.value)
   folderid.innerHTML="<img src=\"images/folder.gif\" border=0 style=\"cursor:hand\" onclick=\"userlist('"+newsfolder+"',1)\" onmouseover=\"this.src='images/folder_over.gif'\" onmouseout=\"this.src='images/folder.gif'\">"
   }
   //给下拉框赋值
   document.all.select.options.length=0;
   newfolder=folders;
   folderstr=""
   var _obj=document.all.select;
   var _o=document.createElement("Option");
   _o.text="选择文件夹";
   _o.value="";
   _obj.add(_o);
   if (newfolder!="")
   {arrfolder=newfolder.split("/")
   for(var i=0;i<arrfolder.length-1;i++)
   {blankstr+=" ";
   folderstr+=arrfolder[i]+"/";
   _o=document.createElement("Option");
   _o.text=blankstr+arrfolder[i];
   _o.value=folderstr;
   _obj.add(_o);
  
   }
   }
  document.all.select.options[document.all.select.options.length-1].selected=true;
   url="getfolder.asp.gl?folder="+folders;
   oRoot=getuserlist(url)
   strshow="<table class=file cellspacing=0 cellpadding=0>";
   len=oRoot.children.length;
   if (len==1)
   {oItem = oRoot.children.item(0);
   if(oItem.children.item(0).text=="empty")
   strshow="没有文件和文件夹了";
   else
   {
   if(oItem.children.item(0).text=="folder")
   {
   strshow+="<tr><td><A href=\"javascript:parent.userlist('"+folders+oItem.children.item(1).text+"/"+"',1)\"><img src=\"images/mediafolder.gif\" border=0 >"+oItem.children.item(1).text+"</A></td></tr>";
   }
   else
   {
   strshow+="<tr><td><a href=\"javascript:parent.addfile('"+oItem.children.item(1).text+"')\" ><img src=\"images/mediafile.gif\" border=0>"+oItem.children.item(1).text+"</A></td></tr>";
  
   }
   }
   strshow+="</table>"
   }
   else{
   //数据入栈
   for(i=0;i<len;i++)
   { oItem = oRoot.children.item(i);
   if(oItem.children.item(0).text=="folder")
   {
   arrff[i]="<A href=\"javascript:parent.userlist('"+folders+oItem.children.item(1).text+"/"+"',1)\"><img src=\"images/mediafolder.gif\" border=0>"+oItem.children.item(1).text+"</A>";
   }
   else
   {
   arrff[i]="<A href=\"javascript:parent.addfile('"+oItem.children.item(1).text+"')\"><img src=\"images/mediafile.gif\" border=0 height=12>"+oItem.children.item(1).text+"</A>";
  
   }
   }
   //取得要输出的列数
   if (len<=6)
   {x=1;
   y=6;}
   else
   {x=len/6;
   y=6;}
   for(var i=0;i<y;i++)
   {strshow+="<tr>"
   for(var j=0;j<x;j++)
   {ponits=j*y+i;
   if (ponits>=len)
   {
   strshow+="<td> </td>";
   }
   else
   {
   strshow+="<td>"+arrff[ponits]+"</td>";
   }
   }
   strshow+="</tr>"
   }
  
   strshow+="</table>"
   }
   filebox.document.body.innerHTML=strshow;
  }
  //-->
  </SCRIPT>
  <script LANGUAGE="vbscript">
  function checkfolder(folderstr)
  if (folderstr="" or instr(folderstr,"/")=instrrev(folderstr,"/")) then
  chec

[1] [2]  下一页


[网页制作]构建免受 FSO 威胁虚拟主机  [Web开发]用ADODB.Stream代替FSO读取文本文件
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台