أعتقد أن كل شخص لديه هذه التجربة: يوجد رابط في الصفحة يشير إلى ملف Word على الخادم. عندما يكون Office مثبتًا على جهاز العميل، فإن النقر فوق الارتباط سيؤدي إلى استدعاء Word لفتحه وتصفحه عندما لا يكون Office مثبتًا على جهاز العميل تم تثبيته، سيؤدي النقر على الرابط إلى ظهور مربع الحوار "حفظ". خلاصة القول، إذا تعرف المتصفح على نوع الملف، فسوف يفتحه تلقائيًا، وإذا لم يتعرف عليه، فسوف يطلب من العميل حفظه. لكن في بعض الأحيان نأمل أنه بغض النظر عن نوع الملف، فإننا لا نريد فتحه والسماح للعميل بحفظه مباشرة. لتحقيق هذا المطلب، بالنسبة للملفات المحفوظة على القرص الثابت للخادم، يجب استخدام أسلوب SendBinary لمكون ASPUpload. بالنسبة للملفات المحفوظة في قاعدة البيانات، ما عليك سوى فتح مجموعة السجلات ثم إخراج البيانات الثنائية مباشرة إلى العميل ، ولكن عليك إخبار المتصفح بنوع MIME واسم الملف وحجم الملف.
1. الملفات الموجودة على القرص الصلب للخادم
<%
تحميل خافت، FilePath
تعيين التحميل = Server.CreateObject(Persits.Upload)
FilePath = Server.MapPath(.) & / & 2003529213019.txt
'وصف معلمة SendBinary:
'المعلمة 1: المسار الفعلي للملف
'المعلمة 2: ما إذا كان سيتم إرسال نوع MIME والمعلومات الأخرى الخاصة بالملف إلى المتصفح
'المعلمة الثالثة: نوع الملف، يمكنك تحديد نوع MIME محدد، ولكن بشكل عام يمكنك استخدام application/octet-binary
'المعلمة 4: اسمح للعميل بحفظ الملف أو فتحه مباشرة. صحيح: خطأ (افتراضي): مفتوح
Upload.SendBinary FilePath، صحيح، التطبيق/الثماني ثنائي، صحيح
%>
2. الملفات الموجودة في قاعدة البيانات من جانب الخادم
<%
خافت objConn،objRs
تعيين objConn = Server.CreateObject(ADODB.Connection)
تعيين objRs = Server.CreateObject(ADODB.RecordSet)
objConn.open Driver={Microsoft Access Driver (*.mdb)};dbq= & Server.MapPath(db1.mdb)
objRs.open حدد * من t5 حيث id=2,objConn,1,3
Response.ContentType = application/octet-stream
Response.AddHeader Content-Disposition,attachment;filename= & objRs(filename)
Response.AddHeader Content-Length,CStr(objRs(size)) 'يجب استخدام تحويل CStr هنا
Response.BinaryWrite objRs (ملف)
objRs.إغلاق
تعيين objRs = لا شيء
objConn.إغلاق
تعيين objConn = لا شيء
%>
تتطلب هذه الطريقة حفظ اسم الملف وحجم الملف في نفس الوقت عند حفظ الملف! إذا لم يتم تحديد اسم الملف وحجمه، وإذا تعرف المتصفح على نوع الملف، فسوف يفتحه تلقائيًا، وإذا لم يفعل ذلك، فستتم مطالبة العميل بحفظه!