首先在服務器端先創(chuàng)建一個程序可以生成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=basefolderfolders
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
'如果該目錄下沒有文件,就發(fā)一個空元素
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";
//歷史記錄數(shù)組棧
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;
//確定歷史狀態(tài)
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;iarrfolder.length-1;i++)
{blankstr+=" ";
folderstr+=arrfolder[i]+"/";
_o=document.createElement("Option");
_o.text=blankstr+arrfolder[i];
_o.value=folderstr;
_obj.add(_o);
strshow+="/table>"
}
filebox.document.body.innerHTML=strshow;
}
//-->
/SCRIPT>
script LANGUAGE="vbscript">
function checkfolder(folderstr)
if (folderstr="" or instr(folderstr,"/")=instrrev(folderstr,"/")) then
checkfolder=""
else
nfolder=left(folderstr,len(folderstr)-1)
checkfolder=left(nfolder,instrrev(nfolder,"/"))
end if
end function
/script>
/HEAD>