Pertama, buat program di sisi server untuk menghasilkan file XML untuk dikembalikan ke klien, (getfolder.asp)
<%
'ditulis oleh Linzhang Chen, 20-4-2003
' Harap sebutkan sumbernya dan simpan informasi hak cipta ini saat mencetak ulang
respon.tulis "<?xml version=""1.0"" coding=""GB2312""?>"&chr(13)
respon.tulis "<mediafile>"&chr(13)
folder=permintaan("folder")
jika folder = "/" maka
folder=""
berakhir jika
hitungan redup
hitungan=0
folder=ganti(folder,"..","")
basefolder="../media/"'jalur folder dasar
folder baru=folder dasar&folder
Setel fso =server.CreateObject("Scripting.FileSystemObject")
setel f=fso.getfolder(server.mappath(folder baru))
atur sf=f.subfolder
untuk setiap fd di sf' mengembalikan daftar folder di bawah jalur yang ditentukan
respon.tulis "<file>"&chr(13)
respon.tulis "<ftype>folder</ftype>"&chr(13)
respon.tulis "<fname>"&fd.name&"</fname>"&chr(13)
respon.tulis "</file>"&chr(13)
hitungan=hitungan+1
Berikutnya
atur sf=tidak ada
atur ff=f.File
untuk setiap fi di ff
fname=fi.nama
if instr("asf,wma,wmv",lcase(mid(fname,instrrev(fname,".")+1)))>0 lalu'Atur jenis file yang boleh dikembalikan untuk mencegah kebocoran kode sumber
respon.tulis "<file>"&chr(13)
respon.tulis "<ftype>file</ftype>"&chr(13)
respon.tulis "<fname>"&fname&"</fname>"&chr(13)
respon.tulis "</file>"&chr(13)
hitungan=hitungan+1
berakhir jika
Berikutnya
'Jika tidak ada file di direktori, kirimkan elemen kosong
jika hitungan = 0 maka
respon.tulis "<file>"&chr(13)
respon.tulis "<ftype>kosong</ftype>"&chr(13)
respon.tulis "<fname>0</fname>"&chr(13)
respon.tulis "</file>"&chr(13)
berakhir jika
respon.tulis "</mediafile>"
atur ff=tidak ada
atur f=tidak ada
atur fso=tidak ada
%>
Berikut hasil kerja client JS (selectfile.asp)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transisi//EN">
<HTML>
<KEPALA>
<TITLE> Pilih file video</TITLE>
<gaya>
td{ukuran font:9pt}
pilih{lebar:210}
.s2{lebar:250}
</gaya>
<BAHASA SKRIP="JavaScript">
<!--
/*ditulis oleh Linzhang Chen ,20-4-2003
Harap tunjukkan sumbernya dan simpan informasi hak cipta ini saat mencetak ulang*/
//Memuat gambar terlebih dahulu
var imgback = Gambar baru();
imgback.src = "gambar/panah.gif";
var imgbackgray = Gambar baru();
imgbackgray.src = "gambar/grayarrow.gif";
var imgfolder = Gambar baru();
imgfolder.src = "gambar/folder.gif";
var imggrayfolder = Gambar baru();
imggrayfolder.src = "gambar/grayfolder.gif";
// Tumpukan susunan riwayat
var arrhistory=Array baru();
varhisi=0;
//Digunakan untuk menentukan nama file yang akan dikembalikan
pemeriksaan fungsi()
{
if (dokumen.semua.namafile.nilai=="")
{
alert("Silahkan pilih filenya terlebih dahulu");
kembali salah;
}
kalau tidak
{
window.returnValue = dokumen.f1.folder.value+document.all.nama file.value;
jendela.tutup();
}
}
//Dapatkan konten file XML
fungsi getuserlist(url)
{ var oXMLDoc = ActiveXObject baru('MSXML');
oXMLDoc.url = url;
var ooRoot=oXMLDoc.root;
kembalikan ooRoot;
}
//Ketika sebuah file dipilih, kembalikan nilai ini ke kotak teks
fungsi file tambahan(txt)
{
document.all.namafile.value=txt;
}
var first=1;//Mendefinisikan
fungsi variabel global daftar pengguna(folder,ti)//Daftar kotak yang dipilih
{document.f1.folder.value=folder;
filebox.document.body.innerHTML="Sedang memuat file, harap tunggu...";
var strshow="";
var timeoutid=null;
var folder baru="";
var arrfolder=Array baru();
var arrff=Array baru();
var blankstr="";
var oItem;
//Tentukan status sejarah
hisi+=ti;
arrhistory[hisi]=folder;
jika (hisi==0)
{
panah.innerHTML="<img src="images/grayarrow.gif">";
}
kalau tidak
{
panah.innerHTML="<img src="images/arrow.gif" border=0 style="kursor:tangan" onclick="userlist('"+arrhistory[hisi-1]+"',- 1)" onmouseover="this.src='images/arrow_over.gif'" onmouseout="this.src='images/arrow.gif'">";
}
//Tentukan folder saat ini
if (dokumen.f1.folder.value=="")
{
folderid.innerHTML="<img src="images/grayfolder.gif">"
}
kalau tidak
{newsfolder=checkfolder(document.f1.folder.value)
folderid.innerHTML="<img src="images/folder.gif" border=0 style="kursor:tangan" onclick="userlist('"+newsfolder+"',1)" onmouseover= "this.src='images/folder_over.gif'" onmouseout="this.src='images/folder.gif'">"
}
//Menetapkan nilai ke kotak drop-down
document.all.select.options.length=0;
folder baru=folder;
folderstr=""
var _obj=dokumen.semua.pilih;
var _o=document.createElement("Pilihan");
_o.text="Pilih folder";
_o.nilai="";
_obj.tambahkan(_o);
jika (folder baru!="")
{arrfolder=folder baru.split("/")
untuk(var i=0;i<arrfolder.panjang-1;i++)
{blankstr+=" ";
folderstr+=arrfolder[i]+"/";
_o=document.createElement("Pilihan");
_o.text=blankstr+arrfolder[i];
_o.value=foldertr;
_obj.tambahkan(_o);
}
}
document.all.select.options[document.all.select.options.length-1].selected=true;
url="getfolder.asp.gl?folder="+folder;
oRoot=dapatkan daftar pengguna(url)
strshow="<kelas tabel=penspasian file=0 bantalan sel=0>";
len=oRoot.anak-anak.panjang;
jika (len==1)
{oItem = oRoot.anak-anak.item(0);
if(oItem.children.item(0).text=="kosong")
strshow="Tidak ada lagi file dan folder";
kalau tidak
{
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>";
}
kalau tidak
{
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+="</tabel>"
}
kalau tidak{
//Dorong data ke tumpukan
untuk(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).teks+"</A>";
}
kalau tidak
{
arrff[i]="<A href="javascript:parent.addfile('"+oItem.children.item(1).text+"')"><img src="images/mediafile.gif" border=0 tinggi=12>"+oItem.anak.item(1).teks+"</A>";
}
}
//Dapatkan jumlah kolom yang akan dihasilkan
jika (len<=6)
{x=1;
kamu=6;}
kalau tidak
{x=len/6;
kamu=6;}
untuk(var i=0;i<y;i++)
{strshow+="<tr>"
untuk(var j=0;j<x;j++)
{ponit=j*y+i;
jika (ponit>=len)
{
strshow+="<td> </td>";
}
kalau tidak
{
strshow+="<td>"+arrff[ponit]+"</td>";
}
}
strshow+="</tr>"
}
strshow+="</tabel>"
}
filebox.document.body.innerHTML=strshow;
}
//-->
</SKRIP>
<skrip BAHASA="vbscript">
fungsi folder periksa(folderstr)
jika (folderstr="" atau instr(folderstr,"/")=instrrev(folderstr,"/")) maka
folder periksa=""
kalau tidak
nfolder=kiri(folderstr,len(folderstr)-1)
checkfolder=kiri(nfolder,instrrev(nfolder,"/"))
berakhir jika
fungsi akhir
</skrip>
</HEAD>
<BODY style="margin:0" bgColor=menu onload="javascript:userlist('',0)">
<tabel lebar = "443" perbatasan = "0" spasi sel = "0">
<tr>
<td height="36"><lebar tabel="409" border="0">
<tr>
<td width="73" align="right">Rentang penelusuran (<u>I</u>):</td>
<td width="214"><pilih nama="pilih" id="pilih" size="1" onchange="javascript:userlist(this.value,1);">
</pilih></td>
<td width="22" valign="baseline" id="panah" align=right></td>
<td lebar="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>
</tabel></td>
</tr>
<tr>
<td height="120"><lebar tabel="100%" height="100%" border="0">
<tr>
<td lebar="9"> </td>
<td>
<iframe src="blank.htm" lebar=415 tinggi=120 id="kotak file"></iframe></td>
<td lebar="13"> </td>
</tr>
</tabel></td>
</tr>
<tr>
<td height="60"><lebar tabel="100%" border="0">
<METODE BENTUK=PASANG TINDAKAN="" name="f1">
<input type="tersembunyi" nama="folder" value="">
<tr>
<td width="85" align="right">Nama file (<u>N</u>): </td>
<td width="254"><input type="text" id="nama file" size="34"></td>
<td><button onclick="javascript:return check()"> Buka (<u>O</U>)</button></td>
</tr>
</BENTUK>
<tr>
<td align="right">Jenis file (<u>T</u>):</td>
<td><pilih nama="pilih2" kelas=s2>
<option>Streaming file media (*.asf, *.wmv, *.wma)</option>
</pilih></td>
<td><input type="button" name="Kirim" value=" Batal " onclick="window.close();"></td>
</tr>
</tabel></td>
</tr>
</tabel>
</BODI>
</HTML>
Ada juga file kecil blank.htm yang digunakan untuk menentukan gaya tampilan file dan folder.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transisi//EN">
<HTML>
<KEPALA>
<TITLE> Dokumen Baru </TITLE>
<gaya>
td{ukuran font:9pt}
badan{ukuran font:9pt}
.file A{WARNA: #000000; DEKORASI TEKS: tidak ada; ukuran font:9pt}
.file A:visited{WARNA: #000000; DEKORASI TEKS: tidak ada;ukuran font:9pt}
.file A:hover {WARNA: #000000; DEKORASI TEKS: tidak ada; ukuran font:9pt}
</gaya>
</HEAD>
<BODY style="margin: 0pt">
</BODY>
</HTML>
Saat memanggil, gunakan fungsi berikut untuk mencapai efek pemilihan file di sisi server yang terlihat seperti aslinya.
file pilihan fungsi()
{
var arr = showModalDialog("selectfile.asp?temp="+Math.random(), "", "dialogWidth:453px; dialogHeight:252px; status:0;help:1");
jika (arr != nol)
{
kembali arr
}
}
Hal terakhir yang dikembalikan oleh fungsi ini adalah nama file yang dipilih. Anda dapat mengambil beberapa gambar yang digunakan dalam fungsi tersebut dari kotak pemilihan file :)
Diperkirakan Anda mungkin menemukan berbagai BUG yang tidak diketahui selama penggunaan. Selamat datang semua orang untuk berkomunikasi dengan saya: E_mail: [email protected]