ใช้ XML+FSO+JS เพื่อนำโค้ดไปใช้สำหรับเอฟเฟกต์การเลือกไฟล์ฝั่งเซิร์ฟเวอร์ เพื่อนๆ ที่ต้องการสามารถอ้างอิงถึงมันได้
-
'เขียนโดย Linzhang Chen, 2003-4-20
' โปรดระบุแหล่งที่มาและเก็บข้อมูลลิขสิทธิ์นี้ไว้เมื่อพิมพ์ซ้ำ
response.write <?xml version=1.0 encoding=GB2312?>&chr(13)
response.write <mediafile>&chr(13)
โฟลเดอร์=คำขอ(โฟลเดอร์)
ถ้าโฟลเดอร์=/แล้ว
โฟลเดอร์=
สิ้นสุดถ้า
จำนวนสลัว
นับ=0
โฟลเดอร์=แทนที่(โฟลเดอร์,..,)
basefolder=../media/'base โฟลเดอร์พาธ
newfolder=basefolder&folders
ตั้งค่า fso =server.CreateObject(Scripting.FileSystemObject)
ตั้งค่า f=fso.getfolder(server.mappath(newfolder))
ตั้งค่า sf=f.โฟลเดอร์ย่อย
สำหรับแต่ละ fd ใน sf' จะส่งคืนรายการโฟลเดอร์ภายใต้เส้นทางที่ระบุ
response.write <ไฟล์>&chr(13)
response.write <ftype>โฟลเดอร์</ftype>&chr(13)
response.write <fname>&fd.name&</fname>&chr(13)
การตอบสนองเขียน </file>&chr(13)
นับ=นับ+1
ต่อไป
ตั้งค่า sf=ไม่มีอะไร
ตั้งค่า ff=f.Files
สำหรับแต่ละ fi ใน ff
fname=fi.name
ถ้า instr(asf,wma,wmv,lcase(mid(fname,instrrev(fname,.)+1)))>0 แล้ว 'ตั้งค่าประเภทไฟล์ที่อนุญาตให้ส่งคืนเพื่อป้องกันการรั่วไหลของซอร์สโค้ด
response.write <ไฟล์>&chr(13)
response.write <ftype>ไฟล์</ftype>&chr(13)
ตอบกลับเขียน <fname>&fname&</fname>&chr(13)
การตอบสนองเขียน </file>&chr(13)
นับ=นับ+1
สิ้นสุดถ้า
ต่อไป
'หากไม่มีไฟล์ในไดเร็กทอรี ให้ส่งองค์ประกอบว่าง
ถ้านับ = 0 แล้ว
response.write <ไฟล์>&chr(13)
response.write <ftype>ว่างเปล่า</ftype>&chr(13)
ตอบกลับเขียน <fname>0</fname>&chr(13)
การตอบสนองเขียน </file>&chr(13)
สิ้นสุดถ้า
response.write </mediafile>
ตั้งค่า ff=ไม่มีอะไร
ตั้งค่า f=ไม่มีอะไร
ตั้งค่า fso=nothing
-
ต่อไปนี้เป็นงานของไคลเอ็นต์ JS (selectfile.asp)
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN>
<HTML>
<หัว>
<TITLE> เลือกไฟล์วิดีโอ</TITLE>
<สไตล์>
td{ขนาดตัวอักษร:9pt}
เลือก {ความกว้าง:210}
.s2{ความกว้าง:250}
</สไตล์>
<ภาษาสคริปต์=จาวาสคริปต์>
-
/*เขียนโดย Linzhang Chen,2003-4-20
โปรดระบุแหล่งที่มาและเก็บข้อมูลลิขสิทธิ์นี้ไว้เมื่อพิมพ์ซ้ำ*/
//โหลดภาพล่วงหน้า
var imgback = รูปภาพใหม่ ();
imgback.src = รูปภาพ/arrow.gif;
var imgbackgray = รูปภาพใหม่ ();
imgbackgray.src = รูปภาพ/grayarrow.gif;
var imgfolder = รูปภาพใหม่ ();
imgfolder.src = รูปภาพ/folder.gif;
var imggrayfolder = รูปภาพใหม่ ();
imggrayfolder.src = รูปภาพ/grayfolder.gif;
// สแต็กอาร์เรย์ประวัติ
var arrhistory=อาร์เรย์ใหม่();
วาร์ฮิสิ=0;
//ใช้เพื่อกำหนดชื่อไฟล์ที่จะส่งคืน
ตรวจสอบฟังก์ชัน()
-
ถ้า (document.all.filename.value==)
-
alert(กรุณาเลือกไฟล์ก่อน);
กลับเท็จ;
-
อื่น
-
window.returnValue =document.f1.folder.value+document.all.filename.value;
หน้าต่าง.ปิด();
-
-
//รับเนื้อหาของไฟล์ XML
ฟังก์ชั่น getuserlist (url)
{ var oXMLDoc = ActiveXObject ใหม่ ('MSXML');
oXMLDoc.url = url;
var ooRoot=oXMLDoc.root;
กลับ ooRoot;
-
//เมื่อเลือกไฟล์แล้ว ให้คืนค่านี้ไปที่กล่องข้อความ
ฟังก์ชั่น addfile(txt)
-
document.all.filename.value=txt;
-
var first=1;//กำหนดตัวแปรส่วนกลาง
ฟังก์ชั่น userlist(folders,ti)//แสดงรายการกล่องที่เลือก
{document.f1.folder.value=โฟลเดอร์;
filebox.document.body.innerHTML=กำลังโหลดไฟล์ โปรดรอสักครู่...;
var strshow=;
var timeoutid=null;
var โฟลเดอร์ใหม่=;
var arrfolder=อาร์เรย์ใหม่();
var arrff=อาร์เรย์ใหม่();
var Blankstr=;
var oItem;
//กำหนดสถานะทางประวัติศาสตร์
ฮิสิ+=ti;
arhistory[hisi]=โฟลเดอร์;
ถ้า (hisi==0)
-
arrow.innerHTML=<img src=/images/grayarrow.gif/>;
-
อื่น
-
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'/>;
-
//กำหนดโฟลเดอร์ปัจจุบัน
ถ้า (document.f1.folder.value==)
-
folderid.innerHTML=<img src=/images/grayfolder.gif/>
-
อื่น
{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'/>
-
//กำหนดค่าให้กับ drop-down box
document.all.select.options.length=0;
โฟลเดอร์ใหม่=โฟลเดอร์;
โฟลเดอร์str=
var _obj=document.all.select;
var _o=document.createElement(ตัวเลือก);
_o.text=เลือกโฟลเดอร์;
_o.value=;
_obj.เพิ่ม(_o);
ถ้า (โฟลเดอร์ใหม่!=)
{arrfolder=newfolder.split(/)
สำหรับ (var i=0;i<arrfolder.length-1;i++)
{ว่างstr+= ;
โฟลเดอร์str+=arrfolder[i]+/;
_o=document.createElement(ตัวเลือก);
_o.text=blankstr+arrfolder[i];
_o.value=โฟลเดอร์str;
_obj.เพิ่ม(_o);
-
-
document.all.select.options[document.all.select.options.length-1].selected=true;
url=getfolder.asp.gl?folder=+โฟลเดอร์;
oRoot=getuserlist(url)
strshow=<table class=file cellspacing=0 cellpadding=0>;
len=oRoot.children.length;
ถ้า (len==1)
{oItem = oRoot.children.item(0);
ถ้า(oItem.children.item(0).text==ว่างเปล่า)
strshow=ไม่มีไฟล์หรือโฟลเดอร์;
อื่น
-
ถ้า(oItem.children.item(0).text==โฟลเดอร์)
-
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>;
-
อื่น
-
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+</td></tr>;
-
-
strshow+=</ตาราง>
-
อื่น{
//พุชข้อมูลเพื่อสแต็ก
สำหรับ(i=0;i<len;i++)
{ oItem = oRoot.children.item(i);
ถ้า(oItem.children.item(0).text==โฟลเดอร์)
-
arrff[i]=<A href=/javascript:parent.userlist('+folders+oItem.children.item(1).text+/+',1)/><img src=/images/mediafolder.gif/ เส้นขอบ =0>+oItem.children.item(1).ข้อความ+</A>;
-
อื่น
-
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).ข้อความ+</A>;
-
-
//รับจำนวนคอลัมน์ที่จะส่งออก
ถ้า (เลน<=6)
{x=1;
ย=6;}
อื่น
{x=เลน/6;
ย=6;}
สำหรับ(var i=0;i<y;i++)
{strshow+=<tr>
สำหรับ(var j=0;j<x;j++)
{ponits=j*y+i;
ถ้า (ponits>=len)
-
strshow+=<td> </td>;
-
อื่น
-
strshow+=<td>+arrff[ponits]+</td>;
-
-
strshow+=</tr>
-
strshow+=</ตาราง>
-
filebox.document.body.innerHTML=strshow;
-
-
</สคริปต์>
<script LANGUAGE=vbscript>
ฟังก์ชั่นโฟลเดอร์ตรวจสอบ (folderstr)
ถ้า (folderstr= หรือ instr(folderstr,/)=instrrev(folderstr,/)) แล้ว
โฟลเดอร์ตรวจสอบ=
อื่น
nfolder=left(folderstr,len(folderstr)-1)
โฟลเดอร์ตรวจสอบ=ซ้าย(nfolder,instrrev(nfolder,/))
สิ้นสุดถ้า
ฟังก์ชั่นสิ้นสุด
</สคริปต์>
</HEAD>
<BODY style=margin:0 bgColor=menu onload=javascript:userlist('',0)>
<ความกว้างของตาราง=443 เส้นขอบ=0 ระยะห่างระหว่างเซลล์=0>
<tr>
<td height=36><ความกว้างของตาราง=409 เส้นขอบ=0>
<tr>
<td width=73 align=right>ช่วงการค้นหา (<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><ความกว้างของตาราง=100% ความสูง=100% เส้นขอบ=0>
<tr>
<td ความกว้าง=9> </td>
<td>
<iframe src=blank.htm ความกว้าง=415 ความสูง=120 id=filebox></iframe></td>
<td ความกว้าง=13> </td>
</tr>
</table></td>
</tr>
<tr>
<td height=60><ความกว้างของตาราง=เส้นขอบ 100%=0>
<วิธีการสร้างแบบฟอร์ม=การดำเนินการภายหลัง=ชื่อ=f1>
<ประเภทอินพุต=ชื่อที่ซ่อนอยู่=ค่าโฟลเดอร์=>
<tr>
<td width=85 align=right>ชื่อไฟล์ (<u>N</u>): </td>
<td width=254><ประเภทอินพุต=ข้อความ id=ขนาดชื่อไฟล์=34></td>
<td><button onclick=javascript:return check()> เปิด (<u>O</U>)</button></td>
</tr>
</รูปแบบ>
<tr>
<td align=right>ประเภทไฟล์ (<u>T</u>):</td>
<td><เลือกชื่อ=select2 class=s2>
<option>การสตรีมไฟล์สื่อ (*.asf, *.wmv, *.wma)</option>
</select></td>
<td><input type=ชื่อปุ่ม=ส่งค่า= ยกเลิก onclick=window.close();></td>
</tr>
</table></td>
</tr>
</ตาราง>
</ร่างกาย>
</HTML>
นอกจากนี้ยังมีไฟล์ขนาดเล็ก blank.htm ที่ใช้กำหนดรูปแบบการแสดงผลของไฟล์และโฟลเดอร์
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN>
<HTML>
<หัว>
<TITLE> เอกสารใหม่ </TITLE>
<สไตล์>
td{ขนาดตัวอักษร:9pt}
เนื้อความ{ขนาดตัวอักษร:9pt}
.file A{COLOR: #000000; TEXT-DECORATION: none;font-size:9pt}
.file A: เยี่ยมชม {COLOR: #000000; TEXT-DECORATION: none;font-size:9pt}
.file A:hover {สี: #000000; การตกแต่งข้อความ: none;font-size:9pt}
</สไตล์>
</HEAD>
<สไตล์ BODY=ระยะขอบ: 0pt>
</ร่างกาย>
</HTML>
เมื่อโทร ให้ใช้ฟังก์ชันต่อไปนี้เพื่อให้ได้ผลจากการเลือกไฟล์ทางฝั่งเซิร์ฟเวอร์ที่ดูเหมือนไฟล์จริง
ฟังก์ชั่นเลือกไฟล์()
-
var arr = showModalDialog(selectfile.asp?temp=+Math.random(), , DialogWidth:453px; DialogHeight:252px; สถานะ: 0; ช่วย: 1);
ถ้า (arr != null)
-
กลับถึง
-
-
สิ่งสุดท้ายที่ฟังก์ชันนี้ส่งคืนคือชื่อไฟล์ที่เลือก คุณสามารถดึงรูปภาพหลายรูปที่ใช้ในฟังก์ชันได้จากกล่องเลือกไฟล์ :)