Erstellen Sie zunächst ein Programm auf der Serverseite, um eine XML-Datei zu generieren, die an den Client zurückgegeben wird (getfolder.asp).
<%
'geschrieben von Linzhang Chen, 20.04.2003
' Bitte geben Sie beim Nachdruck die Quelle an und bewahren Sie diese Copyright-Informationen auf
Response.write "<?xml version=""1.0""kodierung=""GB2312""?>"&chr(13)
Response.write „<Mediendatei>“&chr(13)
Ordner=Anfrage("Ordner")
wenn Ordner="/" dann
Ordner=""
Ende wenn
schwache Zählung
Anzahl=0
Ordner=ersetzen(Ordner,"..","")
basefolder="../media/"'Basisordnerpfad
neuer Ordner=Basisordner&Ordner
Setze fso =server.CreateObject("Scripting.FileSystemObject")
set f=fso.getfolder(server.mappath(newfolder))
setze sf=f.subfolders
Für jedes fd in sf' wird eine Liste der Ordner unter dem angegebenen Pfad zurückgegeben
Response.write „<Datei>“&chr(13)
Response.write „<ftype>Ordner</ftype>“&chr(13)
Response.write "<fname>"&fd.name&"</fname>"&chr(13)
Response.write „</file>“&chr(13)
Anzahl=Anzahl+1
nächste
setze sf=nichts
setze ff=f.Dateien
für jedes fi in ff
fname=fi.name
if instr("asf,wma,wmv",lcase(mid(fname,instrrev(fname,".")+1)))>0 then'Legen Sie die Dateitypen fest, die zurückgegeben werden dürfen, um Quellcodelecks zu verhindern
Response.write „<Datei>“&chr(13)
Response.write „<ftype>file</ftype>“&chr(13)
Response.write "<fname>"&fname&"</fname>"&chr(13)
Response.write „</file>“&chr(13)
Anzahl=Anzahl+1
Ende wenn
nächste
'Wenn sich keine Datei im Verzeichnis befindet, senden Sie ein leeres Element
wenn count=0 dann
Response.write „<Datei>“&chr(13)
Response.write „<ftype>empty</ftype>“&chr(13)
Response.write „<fname>0</fname>“&chr(13)
Response.write „</file>“&chr(13)
Ende wenn
Response.write „</mediafile>“
setze ff=nichts
setze f=nichts
setze fso=nichts
%>
Das Folgende ist die Arbeit des Client-JS (selectfile.asp)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<KOPF>
<TITLE> Videodatei auswählen</TITLE>
<Stil>
td{font-size:9pt}
select{width:210}
.s2{width:250}
</style>
<SCRIPT LANGUAGE="JavaScript">
<!--
/*geschrieben von Linzhang Chen, 20.04.2003
Bitte geben Sie die Quelle an und bewahren Sie diese Copyright-Informationen beim Nachdruck auf*/
//Bilder vorladen
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";
//History-Array-Stapel
var arrhistory=new Array();
varhisi=0;
//Wird verwendet, um den Dateinamen zu bestimmen, der zurückgegeben werden soll
Funktionscheck()
{
if (document.all.filename.value=="")
{
Alert("Bitte wählen Sie zuerst die Datei aus");
return false;
}
anders
{
window.returnValue =document.f1.folder.value+document.all.filename.value;
window.close();
}
}
//Den Inhalt der XML-Datei abrufen
Funktion getuserlist(URL)
{ var oXMLDoc = new ActiveXObject('MSXML');
oXMLDoc.url = url;
var ooRoot=oXMLDoc.root;
return ooRoot;
}
//Wenn eine Datei ausgewählt ist, diesen Wert in das Textfeld zurückgeben
Funktion addfile(txt)
{
document.all.filename.value=txt;
}
var first=1;//Definieren Sie eine globale Variablenfunktion
userlist(folders,ti)//Listen Sie die ausgewählten Felder auf
{document.f1.folder.value=Ordner;
filebox.document.body.innerHTML="Datei wird geladen, bitte warten...";
var strshow="";
var timeoutid=null;
var neuer Ordner="";
var arrfolder=new Array();
var arrff=new Array();
var blankstr="";
var oItem;
//Historischen Status ermitteln
hisi+=ti;
arrhistory[hisi]=Ordner;
if (hisi==0)
{
Arrow.innerHTML="<img src="images/grayarrow.gif">";
}
anders
{
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'">";
}
//Bestimmen Sie den aktuellen Ordner
if (document.f1.folder.value=="")
{
Folderid.innerHTML="<img src="images/grayfolder.gif">"
}
anders
{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'">"
}
//Weisen Sie dem Dropdown-Feld einen Wert zu
document.all.select.options.length=0;
neuer Ordner=Ordner;
Ordnerstr=""
var _obj=document.all.select;
var _o=document.createElement("Option");
_o.text="Ordner auswählen";
_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 cellpacing=0 cellpadding=0>";
len=oRoot.children.length;
if (len==1)
{oItem = oRoot.children.item(0);
if(oItem.children.item(0).text=="empty")
strshow="Keine weiteren Dateien und Ordner";
anders
{
if(oItem.children.item(0).text=="Ordner")
{
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>";
}
anders
{
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>"
}
anders{
//Daten auf den Stapel schieben
for(i=0;i<len;i++)
{ oItem = oRoot.children.item(i);
if(oItem.children.item(0).text=="Ordner")
{
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>";
}
anders
{
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>";
}
}
//Ermitteln Sie die Anzahl der auszugebenden Spalten
if (len<=6)
{x=1;
y=6;}
anders
{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>";
}
anders
{
strshow+="<td>"+arrff[ponits]+"</td>";
}
}
strshow+="</tr>"
}
strshow+="</table>"
}
filebox.document.body.innerHTML=strshow;
}
//-->
</SCRIPT>
<script LANGUAGE="vbscript">
Funktion checkfolder(folderstr)
if (folderstr="" or instr(folderstr,"/")=instrrev(folderstr,"/")) then
checkfolder=""
anders
nfolder=left(folderstr,len(folderstr)-1)
checkfolder=left(nfolder,instrrev(nfolder,"/"))
Ende wenn
Endfunktion
</script>
</HEAD>
<BODY style="margin:0" bgColor=menu onload="javascript:userlist('',0)">
<table width="443" border="0" cellpacing="0">
<tr>
<td height="36"><table width="409" border="0">
<tr>
<td width="73" align="right">Suchbereich (<u>I</u>):</td>
<td width="214"><select name="select" id="select" size="1" onchange="javascript:userlist(this.value,1);">
</select></td>
<td width="22" valign="baseline" id="arrow" align=right></td>
<td width="20" valign="middle" id="folderid"></td>
<td width="20" align="left"><img src="images/md.gif" width="16" height="15"></td>
<td width="28" align="left"><img src="images/viewtype.gif" width="23" height="14"></td>
</tr>
</table></td>
</tr>
<tr>
<td height="120"><table width="100%" height="100%" border="0">
<tr>
<td width="9"> </td>
<td>
<iframe src="blank.htm" width=415 height=120 id="filebox"></iframe></td>
<td width="13"> </td>
</tr>
</table></td>
</tr>
<tr>
<td height="60"><table width="100%" border="0">
<FORM METHOD=POST ACTION="" name="f1">
<input type="hidden" name="folder" value="">
<tr>
<td width="85" align="right">Dateiname (<u>N</u>): </td>
<td width="254"><input type="text" id="filename" size="34"></td>
<td><button onclick="javascript:return check()">Öffnen (<u>O</U>)</button></td>
</tr>
</FORM>
<tr>
<td align="right">Dateityp (<u>T</u>):</td>
<td><select name="select2" class=s2>
<option>Mediendateien (*.asf, *.wmv, *.wma) streamen</option>
</select></td>
<td><input type="button" name="Submit" value="Cancel " onclick="window.close();"></td>
</tr>
</table></td>
</tr>
</table>
</BODY>
</HTML>
Es gibt auch eine kleine Datei blank.htm, mit der der Anzeigestil von Dateien und Ordnern definiert wird.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<KOPF>
<TITLE> Neues Dokument </TITLE>
<Stil>
td{font-size:9pt}
Körper{font-size:9pt}
.file A{COLOR: #000000; TEXT-DECORATION: none;font-size:9pt}
.file A:visited{COLOR: #000000; TEXT-DECORATION: none;font-size:9pt}
.file A:hover {COLOR: #000000; TEXT-DECORATION: none;font-size:9pt}
</style>
</HEAD>
<BODY style="margin: 0pt">
</BODY>
</HTML>
Verwenden Sie beim Aufruf die folgende Funktion, um den Effekt zu erzielen, dass auf der Serverseite Dateien ausgewählt werden, die genauso aussehen wie die echten.
Funktion selectfile()
{
var arr = showModalDialog("selectfile.asp?temp="+Math.random(), "", "dialogWidth:453px; dialogHeight:252px; status:0;help:1");
if (arr != null)
{
Rückkehr ank
}
}
Das letzte, was von dieser Funktion zurückgegeben wird, ist der ausgewählte Dateiname. Sie können mehrere in der Funktion verwendete Bilder aus dem Dateiauswahlfeld abrufen.
Es wird geschätzt, dass Sie während der Verwendung auf verschiedene unbekannte Fehler stoßen. Willkommen bei allen, die mit mir kommunizieren möchten: E-Mail: [email protected]