عند ربط المستندات في IE، إذا واجه مستندًا مدعومًا بواسطة OLE، فسيقوم IE تلقائيًا باستدعاء البرنامج المقابل لفتحه. في بعض الأحيان لا تكون هذه الوظيفة هي ما نحتاجه، على الرغم من أنه يمكننا تذكير المستخدم بالنقر بزر الماوس الأيمن فوقه-> save target as .... أمر لتنزيل المستندات، لكن هذا ليس أمرًا سهلاً للغاية بعد كل شيء، توضح هذه المقالة استخدام طريقتي FSO وStream لتنفيذ التنزيل المباشر للمستندات بواسطة IE. <%@ language=صفحة تشفير vbscript=65001%>
<%
'يجب إدخال اسم الملف
إذا طلب (اسم الملف) = ثم
Response.write <h1>خطأ:</h1>اسم الملف فارغ!<p>
آخر
استدعاء downloadFile(replace(replace(Request(Filename),/,),/,))
وظيفة تنزيل الملف (strFile)
تأكد من أنك تستخدم أحدث إصدار من MDAC حتى يعمل هذا
'الحصول على المسار الكامل للملف المحدد
strFilename = server.MapPath(strFile)
'مسح المخزن المؤقت
Response.Buffer = صحيح
الاستجابة.واضحة
"إنشاء دفق
مجموعة s = Server.CreateObject(ADODB.Stream)
س. مفتوح
'تعيين كثنائي
س.النوع = 1
"تحميل في الملف
على خطأ استئناف المقبل
'تأكد من وجود الملف
تعيين fso = Server.CreateObject(Scripting.FileSystemObject)
إذا لم يكن fso.FileExists(strFilename) ثم
Response.Write(<h1>خطأ:</h1>&strFilename& غير موجود!<p>)
الاستجابة.النهاية
نهاية إذا
'الحصول على طول الملف
تعيين f = fso.GetFile(strFilename)
intFilelength = f.size
s.LoadFromFile(strFilename)
إذا أخطأت بعد ذلك
Response.Write(<h1>خطأ: </h1>خطأ غير معروف!<p>)
الاستجابة.النهاية
نهاية إذا
'أرسل الرؤوس إلى تصفح المستخدمين
Response.AddHeader Content-Disposition,attachment; filename=&f.name
Response.AddHeader Content-Length، intFilelength
Response.CharSet = UTF-8
Response.ContentType = application/octet-stream
'إخراج الملف إلى المتصفح
Response.BinaryWrite s.Read
الاستجابة. فلوش
'مرتب
ق.إغلاق
مجموعة ق = لا شيء
وظيفة النهاية
نهاية إذا
%>