لقد واجهت مثل هذه المشكلة عند استخدام ASP لإنشاء صفحة ويب لوحدة معينة. قام نظام MIS السابق للوحدة بحفظ بعض ملفات Word في شكل تدفقات بايت في قاعدة البيانات. الآن يطلب مني المستخدم استخدام ASP لاستخراج ملف Word هذا البيانات من قاعدة البيانات يتم إخراجها وعرضها على صفحة الويب. في البداية، فكرت بطبيعة الحال في إنشاء ملف مؤقت على الخادم، ثم إضافة رابط للملف المؤقت في صفحة الويب، ومع ذلك، ستؤدي هذه الطريقة إلى زيادة التحميل على الخادم بشكل كبير، وكيفية التأكد من وجود الملف المؤقت يتم ضمان عدم استبدال الملفات التي يستخدمها عميل معين في الخدمة بملفات يستخدمها عملاء آخرون، ومن الصعب حل هذه المشكلات عمليًا. فهل هناك طريقة أفضل؟
لهذا السبب، قمت بفحص الكتاب المرجعي لـ ASP بعناية ووجدت أن كائن الاستجابة يحتوي على سمة تسمى نوع المحتوى، والتي تحدد نوع MIME للمحتوى الذي يرسله الخادم إلى العميل. الاسم الكامل لـ MIME هو Multi Purpose Internet Mail Extensions، وهو ملحق بريد إنترنت متعدد الأغراض. نحن نعلم أننا في برمجة الويب نشير أحيانًا إلى رابط تشعبي إلى ملف Word أو Excel. عندما ينقر المستخدم على الرابط، سيقوم المتصفح تلقائيًا باستدعاء الطريقة المقابلة لفتح الملف. السبب وراء إمكانية ذلك هو أنه بعد تثبيت المكتب على جهاز المستخدم، سيتم تسجيل نوع مورد MIME المقابل في المتصفح. على سبيل المثال، نوع MIME لملف Word هو Application/msword (الأول هو نوع MIME والأخير هو فئة فرعية MIME)، ونوع مورد MIME لملف Excel هو Application/msexcel. في الواقع، جميع الموارد التي يمكن للمتصفح التعامل معها لها أنواع موارد MIME مقابلة. على سبيل المثال، نوع MIME لملفات html هو Text/html، ونوع MIME لملفات JPG هو Image/JPG. في التفاعل مع الخادم، يحدد المتصفح نوع المعالجة التي سيتم إجراؤها بناءً على نوع MIME للبيانات المستلمة. بالنسبة لملفات مثل html وJPG، سيفتحها المتصفح مباشرة لملفات مثل Word وExcel ، لا يمكن للمتصفح فتحها بنفسه، ويتم فتح الملف عن طريق استدعاء الطريقة المقابلة. بالنسبة للملفات التي لم يتم وضع علامة عليها بنوع MIME، يخمن المتصفح نوعها بناءً على امتدادها ومحتوى الملف. إذا لم يتمكن المتصفح من تخمينه، فسيتم تمريره كتطبيق/تدفق ثماني بتات. لفهم أنواع MIME للملفات المختلفة، يرجى عرضها في win98 جهاز الكمبيوتر->عرض->خيارات المجلد->أنواع الملفات.
لذلك خطرت لي فكرة واعتقدت أنه في ASP، يمكنني أولاً إخراج بيانات WORD كتدفق بايت، ثم وضع علامة على سمة نوع المحتوى الخاصة بها على أنها Application/msword، ثم إرسالها إلى العميل بعد أن يتلقى العميل هذا المورد سيتم كتابة MIME، وسيتم استدعاء Word تلقائيًا على جهاز الكمبيوتر العميل (بالطبع، الفرضية هي أن Word مثبت على جهاز الكمبيوتر العميل، وإلا فسيتم التعامل معه كمورد غير معروف، مما يدفع المستخدم إلى حفظه بدلاً من فتحه) افتحه. نتائج الاختبار جيدة جدًا، والطريقة بسيطة وسريعة، ويستخدم المتصفح الوضع المضمن (المشابه لوضع OLE) لفتحه في IE5، والتأثير أفضل. وفيما يلي محتوى البرنامج.
افترض أن اسم الجدول هو tab_word. يوجد حقلان في الجدول، أحدهما عبارة عن عدد صحيح يسمى id، والذي يتم استخدامه كمعرف فريد لبيانات Word، والآخر هو نوع Blob يسمى worddata، والذي يقوم بتخزين بيانات Word. الآن نريد عرض محتوى ملف Word بمعرف يساوي 1 على الصفحة، ويكون برنامج ASP كما يلي:
<%
'conn - تم إنشاء اتصال قاعدة البيانات
'rs - مجموعة النتائج
rs = conn.execute(select
بيانات الكلمات من tab_word حيث المعرف = 1)
Response.contenttype = التطبيق/msword
استجابة.writebinary (RS (بيانات الكلمات))
'كن حذرًا عند إرسال البيانات الموجودة في مجموعة النتائج مباشرة باستخدام writebinary، ولا تستخدم المتغيرات
"استلم هذه البيانات، وإلا فسيقوم النظام بالإبلاغ عن خطأ."
%>
وباستخدام أساليب مشابهة، يمكنك أيضًا معالجة Excel وBmp والعديد من أنواع البيانات الأخرى.