استخدم XML+FSO+JS لتنفيذ التعليمات البرمجية لتأثير اختيار الملف من جانب الخادم، ويمكن للأصدقاء الذين يحتاجون إليها الرجوع إليها.
<%
'كتبه Linzhang Chen، 2003-4-20
يرجى الإشارة إلى المصدر والاحتفاظ بمعلومات حقوق النشر هذه عند إعادة الطباعة
Response.write <?xml version=1.0 encoding=GB2312?>&chr(13)
استجابة.كتابة <mediafile>&chr(13)
المجلدات = طلب (مجلد)
إذا كانت المجلدات =/ثم
المجلدات =
نهاية إذا
العد الخافت
العد=0
المجلدات = استبدال (المجلدات،..،)
basefolder=../media/'مسار المجلد الأساسي
newfolder=basefolder&folders
تعيين fso =server.CreateObject(Scripting.FileSystemObject)
تعيين f=fso.getfolder(server.mappath(newfolder))
تعيين sf=f.subfolders
لكل fd في sf' يُرجع قائمة بالمجلدات الموجودة ضمن المسار المحدد
استجابة.كتابة <ملف>&chr(13)
Response.write <ftype>مجلد</ftype>&chr(13)
استجابة.كتابة <fname>&fd.name&</fname>&chr(13)
استجابة.كتابة </file>&chr(13)
العد=العد+1
التالي
تعيين sf=لا شيء
تعيين ff=f.Files
لكل فاي في صص
fname=fi.name
إذا instr(asf,wma,wmv,lcase(mid(fname,instrrev(fname,.)+1)))>0 ثم قم بتعيين أنواع الملفات المسموح بإرجاعها لمنع تسرب التعليمات البرمجية المصدر
استجابة.كتابة <ملف>&chr(13)
Response.write <ftype>ملف</ftype>&chr(13)
استجابة.كتابة <fname>&fname&</fname>&chr(13)
استجابة.كتابة </file>&chr(13)
العد=العد+1
نهاية إذا
التالي
'إذا لم يكن هناك ملف في الدليل، أرسل عنصرًا فارغًا
إذا كان العد = 0 ثم
استجابة.كتابة <ملف>&chr(13)
Response.write <ftype>فارغ</ftype>&chr(13)
استجابة.كتابة <fname>0</fname>&chr(13)
استجابة.كتابة </file>&chr(13)
نهاية إذا
استجابة.كتابة </mediafile>
تعيين وما يليها = لا شيء
تعيين و = لا شيء
تعيين fso=لا شيء
%>
فيما يلي عمل العميل JS (selectfile.asp)
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN>
<أتش تي أم أل>
<الرأس>
<TITLE> حدد ملف الفيديو</TITLE>
<نمط>
تد {حجم الخط: 9pt}
حدد {العرض: 210}
.s2 {العرض: 250}
</نمط>
<لغة البرنامج النصي=جافا سكريبت>
<!--
/ * كتب بواسطة Linzhang Chen، 2003-4-20
يرجى الإشارة إلى المصدر والاحتفاظ بمعلومات حقوق النشر هذه عند إعادة الطباعة*/
// تحميل الصور مسبقًا
var imgback = new Image();
imgback.src = image/arrow.gif;
var imgbackgray = new Image();
imgbackgray.src = image/grayarrow.gif;
var imgfolder = new Image();
imgfolder.src = Images/folder.gif;
var imggrayfolder = new Image();
imggrayfolder.src = Images/grayfolder.gif;
// مكدس صفيف التاريخ
var arrhistory=new Array();
فارهيسي=0;
// يستخدم لتحديد اسم الملف المراد إرجاعه
فحص الوظيفة ()
{
إذا (document.all.filename.value==)
{
تنبيه (يرجى تحديد الملف أولا)؛
عودة كاذبة.
}
آخر
{
window.returnValue =document.f1.folder.value+document.all.filename.value;
window.Close();
}
}
// احصل على محتوى ملف XML
وظيفة getuserlist(url)
{ var oXMLDoc = new ActiveXObject('MSXML');
oXMLDoc.url = url;
var ooRoot=oXMLDoc.root;
إرجاع جذر؛
}
// عند تحديد ملف، قم بإرجاع هذه القيمة إلى مربع النص
وظيفة ملف الإضافة (txt)
{
document.all.filename.value=txt;
}
var first=1;// تحديد متغير عام
وظيفة قائمة المستخدمين (المجلدات، ti) // قائمة المربعات المحددة
{document.f1.folder.value=folders;
filebox.document.body.innerHTML=جاري تحميل الملف، يرجى الانتظار...;
فار strshow=;
var timeoutid=null;
فار مجلد جديد=;
var arrfolder=new Array();
var arrff=new Array();
فار بلانكستر=;
فار oItem;
// تحديد الحالة التاريخية
hisi+=ti;
arrhistory[hisi]=folders;
إذا (هيسي ==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'/>
}
// قم بتعيين قيمة للمربع المنسدل
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);
إذا (مجلد جديد!=)
{arrfolder=newfolder.split(/)
for(var i=0;i<arrfolder.length-1;i++)
{فارغة+= ;
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;
إذا (لين==1)
{oItem = oRoot.children.item(0);
إذا (oItem.children.item(0).text==فارغ)
strshow=لا توجد ملفات أو مجلدات؛
آخر
{
إذا (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>;
}
آخر
{
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>
}
آخر{
// ادفع البيانات إلى المكدس
ل(i=0;i<len;i++)
{ oItem = oRoot.children.item(i);
إذا (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>;
}
آخر
{
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>;
}
}
// احصل على عدد الأعمدة المراد إخراجها
إذا (لين <= 6)
{س=1;
ص = 6؛}
آخر
{س=لين/6;
ص = 6؛}
ل(فار ط=0;أنا<y;i++)
{سترشو+=<tr>
ل(فار ي=0;ي<x;ي++)
{ponits=j*y+i;
إذا (بونيتس> = لين)
{
strshow+=<td> </td>;
}
آخر
{
strshow+=<td>+arrff[ponits]+</td>;
}
}
strshow+=</tr>
}
strshow+=</table>
}
filebox.document.body.innerHTML=strshow;
}
//-->
</النص>
<لغة البرنامج النصي=vbscript>
مجلد الاختيار الوظيفي (folderstr)
إذا (folderstr= أو instr(folderstr,/)=instrrev(folderstr,/)) ثم
مجلد الاختيار =
آخر
nfolder=left(folderstr,len(folderstr)-1)
checkfolder=left(nfolder,instrrev(nfolder,/))
نهاية إذا
وظيفة النهاية
</script>
</الرأس>
<BODY style=margin:0 bgColor=menu onload=javascript:userlist('',0)>
<عرض الجدول=443 حد=0 تباعد الخلايا=0>
<تر>
<ارتفاع td=36><عرض الجدول=409 حدود=0>
<تر>
<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=22 valign=معرف خط الأساس=محاذاة السهم=يمين></td>
<td width=20 valign=mididid=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>
</الجدول></تد>
</tr>
<تر>
<ارتفاع td=120><عرض الجدول=ارتفاع 100%=حدود 100%=0>
<تر>
<td width=9> </td>
<TD>
<iframe src=blank.htm width=415 height=120 id=filebox></iframe></td>
<td width=13> </td>
</tr>
</الجدول></تد>
</tr>
<تر>
<ارتفاع td=60><عرض الجدول=100% حدود=0>
<طريقة النموذج=إجراء ما بعد=الاسم=f1>
<نوع الإدخال=الاسم المخفي=قيمة المجلد=>
<تر>
<td width=85 align=right>اسم الملف (<u>N</u>): </td>
<عرض td=254><نوع الإدخال=معرف النص=حجم اسم الملف=34></td>
<td><button onclick=javascript:return check()> فتح (<u>O</U>)</button></td>
</tr>
</فورم>
<تر>
<td align=right>نوع الملف (<u>T</u>):</td>
<td><select name=select2 class=s2>
<option>تدفق ملفات الوسائط (*.asf، *.wmv، *.wma)</option>
</select></td>
<td><نوع الإدخال=اسم الزر=إرسال القيمة= إلغاء عند النقر=window. Close();></td>
</tr>
</الجدول></تد>
</tr>
</الجدول>
</الجسم>
</HTML>
يوجد أيضًا ملف فارغ .htm صغير يستخدم لتحديد نمط عرض الملفات والمجلدات.
<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN>
<أتش تي أم أل>
<الرأس>
<TITLE> مستند جديد </TITLE>
<نمط>
تد {حجم الخط: 9pt}
الجسم {حجم الخط: 9pt}
.الملف أ{اللون: #000000؛ زخرفة النص: لا شيء؛ حجم الخط: 9pt}
.الملف أ: تمت الزيارة {COLOR: #000000؛ TEXT-DECORATION: none;font-size:9pt}
.الملف أ: تحوم {اللون: #000000؛ زخرفة النص: لا شيء؛ حجم الخط: 9pt}
</نمط>
</الرأس>
<نمط الجسم=الهامش: 0pt>
</الجسم>
</HTML>
عند الاتصال، استخدم الوظيفة التالية لتحقيق تأثير تحديد الملفات على جانب الخادم التي تبدو تمامًا مثل الملف الحقيقي.
وظيفة تحديد الملف ()
{
var arr = showModalDialog(selectfile.asp?temp=+Math.random(), , الحوارWidth:453px; الحوار الارتفاع:252px; الحالة:0;مساعدة:1);
إذا (arr! = فارغ)
{
العودة آر
}
}
آخر شيء يتم إرجاعه بواسطة هذه الوظيفة هو اسم الملف المحدد. يمكنك الحصول على العديد من الصور المستخدمة في الوظيفة من مربع تحديد الملف :).