عند ربط المستندات في IE، إذا واجه مستندًا مدعومًا بواسطة OLE، فسيقوم IE تلقائيًا باستدعاء البرنامج المقابل لفتحه. في بعض الأحيان لا تكون هذه الوظيفة هي ما نحتاجه، على الرغم من أنه يمكننا تذكير المستخدم بالنقر بزر الماوس الأيمن فوقه-> الأمر "حفظ الهدف باسم" "..." لتنزيل المستندات، ولكن هذا ليس أمرًا سهلاً للغاية على أية حال. توضح هذه المقالة استخدام طريقتي FSO وStream لتنفيذ التنزيل المباشر للمستندات بواسطة IE
<%@ language=vbscript codepage =65001%>
<%
'يجب إدخال اسم الملف
إذا طلب ("اسم الملف") = "" ثم
Response.write "<h1>خطأ:</h1>اسم الملف فارغ!<p>"
آخر
استدعاء downloadFile(replace(replace(Request("اسم الملف")"،"،")،"/"،"،"))
وظيفة تنزيل الملف (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>")
الاستجابة.النهاية
end if
' أرسل الرؤوس إلى تصفح المستخدمين
Response.AddHeader "Content-Disposition"، "attachment؛ filename = "&f.name
Response.AddHeader "طول المحتوى"، intFilelength
Response.CharSet = "UTF-8"
Response.ContentType = "application/octet-stream"
' إخراج الملف إلى المتصفح
Response.BinaryWrite s.Read
Response.Flush
'مرتبة
ق.إغلاق
مجموعة s =
وظيفة نهاية
لا شيء
نهاية إذا
%>