استخدام البرنامج النصي الذي تم تحميله
فيما يلي مثال على البرنامج النصي الذي تم تحميله للتطوير. يوفر ملف التنزيل في هذه المقالة الملفات والرمز في المثال. حرر الملف المضغوط إلى مسار وتكوين مسار افتراضي لخادم الشبكة الخاص بك. يمكنك اختبار وبدء تشغيل TOPLOADForm.html في المتصفح.
استدعاء السيناريو
فيما يلي طريقة للاتصال بـ BuilduploadRequest طريقة. اتصل أولاً بعملية كاملة: UploadRequest. ثم اتصل بطريقة builuploadRequest ، ثم نقلها إلى الطلبات الثنائية الأصلية في المتغير المستقل.
bytecount = request.totalbytes
requestbin = request.binaryRead (bytecount)
قاتمة التحميل
Set LoadRequest = createObject
BuilduploadRequest requestbin
يتم تحلل البيانات وتخزينها في كائن القاموس واستردادها باستخدام طريقة العنصر (). يمكن تخزين بيانات العنصر هذه في متغيرات VBScript ويمكن استخدامها في أي مكان في الكود. يمكن نقل البيانات كاستجابة للعميل ، أو استخدامها في رمز ASP ، أو في الملف ووضعها في قاعدة البيانات.
استرداد البيانات
يمكن الوصول إلى بيانات كائن exploadRequest مع وظيفة العنصر ("المفتاح"). دعونا نفكر في هذا الموقف الآن: للوصول إلى قيمة التحكم في البريد الإلكتروني. يمكنك القيام بذلك:
البريد الإلكتروني = exploadRequest.item ("البريد الإلكتروني").
نظرًا لأن هذا عنصر تحكم نص ، فإن المحتوى عبارة عن سلسلة ، يمكن استخدام هذه السلسلة مثل أي سلسلة VBScript أخرى. بالنسبة للبيانات الثنائية ، يمكنك استعادة المحتوى في نفس الطريقة:
Piction = exploadRequest.item ("blob").
يمكنك أيضًا الوصول إلى معلومات أخرى ، مثل اسم الملف ونوع المحتوى. هم التحكم في النص.
contentType = exploadRequest.item ("blob").
FilePathName = exploadRequest.item ("blob").
استخدم البيانات في رمز vbscript
يمكن استخدام البيانات التي تم تحميلها في رمز VBScript مثل المتغيرات الأخرى. على سبيل المثال ، يمكنهم إعادة إرسال العميل كرد.
بريدك الإلكتروني هو: <٪ = البريد الإلكتروني ٪>
اسم ملف الشباب هو <٪ = filePathName ٪>
نوع الملف لصالحك هو <٪ = contentType ٪>
يمكن أيضًا إرسال البيانات الثنائية إلى العميل. يجب تعيين نوع المحتوى ، ويمكن استخدام البيانات الثنائية لكتابة طريقة BinaryWrite.
استجابة
اكتب البيانات التي تم تحميلها إلى الملف
في حالة التحكم في فئة الملفات ، يتمثل الغرض من تخزين البيانات الثنائية في مجال ملف أو قاعدة بيانات بدلاً من إرسالها إلى العميل. هذا الغرض هو الخصائص المتأصلة لتحميل الملفات. استخدم كائن نظام الملفات لتخزين الملف الذي تم تحميله في نظام الملفات للخادم.
قم أولاً بإنشاء كائن نظام الملفات:
"إنشاء fileyTemObject Component ScriptObject = server.createObject (" scripting.filesystemObject ")
استخدم كائن نظام الملفات لإنشاء ملف في المسار. يمكن أن يكون المسار مطلقًا ، ويشير مباشرة إلى نظام الملفات (مثل C:/temp). يمكن أن يكون أيضًا نسبيًا ، ضمن مسار افتراضي يحدده خادم الشبكة. استخدم طريقة mappath ومتغير خادم Path_info لاتخاذ المسار الظاهري إلى المسار المطلق.
تتطلب طريقة الكتابة سلسلة ثنائية ببليت كمتغير مستقل ، بحيث يتم تحويل رقم البايت المفرد إلى سلسلة. طريقة الكتابة هي المسؤولة عن تحويل هذه السلسلة المزدوجة -بايت وكتابتها بتنسيق ASCII. هذا يحدد محتوى ثنائي يحتوي على سلسلة بايت الفردية الأصلية. لقد قمت بتسمية هذا الملف "تم تحميله + اسم الملف".
"قم بإنشاء ملف واكتب إلى ملف myfile = scriptObject.createTextFile (server.mappath (request.servervariables_ (" path_info ")
ل I = 1 إلى Lenb (القيمة)
myfile.write chr (ASCB (midb (القيمة ، i ، 1))))
التالي
myfile.close
بدء تشغيل البيانات التي تم تحميلها في قاعدة البيانات
يمكن أيضًا تخزين البيانات في قاعدة البيانات. يجب أيضًا تخزين نوع المحتوى في قاعدة البيانات بحيث يمكن عرض البيانات لاحقًا. بادئ ذي بدء ، يجب علينا إنشاء اتصال مع قاعدة البيانات.
تعيين conn = server.createObject ("adodb.connection")
conn.open "dsn = wroxdns" ، "المستخدم" ، "تمريرة"
ثم قم بإنشاء مجموعة سجلات من الاتصال:
SQL = "SELECT Photo ، ContentType من Mytable"
تعيين RS = Server.CreateBject
Rs.OOPEN SQL ، CONN ، 3 ، 3 ، 3
بعد إنشاء مجموعة السجلات ، ضع البيانات الثنائية في مجال blob لقاعدة البيانات:
Picturechunk = Picture & Chrb (0)
Rs.fields ("PITION").
RS.Fields ("contentType") = contentType
Rs.update
conn.close
في طريقة apendchunk ، لا بد لي من حل الخلل. في الواقع ، لقد لاحظت أنه عندما يكون للبيانات الثنائية بايتات غريبة ، فإن طريقة AppendChunk لا تنقل البايت الأخير. الحل هو إضافة CHR (0) للتأكد من نقل جميع البايتات. ربما هناك طرق أخرى ، إذا كان الأمر كذلك ، من فضلك قل لي.
للحصول على انعكاس لقاعدة البيانات ، استخدم نفس مجموعة السجلات ، واستخدم نوع المحتوى الصحيح لإرساله إلى العميل كاستجابة.
استجابة. contenttype = rs.fields ("contentType")
الحجم = Rs.fields ("Piction")
Blob = Rs.fields ("Piction").
استجابة
ختاماً
تعرض هذه المقالة طريقة كاملة لتقديم الملف باستخدام VBScript. الترميز هو vbscript بالكامل ، مستقلة عن المنتجات الثالثة.
قم أولاً بتقديم عملية التحميل (باستخدام محتوى "multipart/form-data" لـ HTML). ثم قدم رمز VBScript الذي تم تحميله بالتفصيل. في البداية ، مراجعة موجزة لوظيفة VBScript لسلسلة التشغيل وسلسلة أرقام بايت واحدة. ثم قدم رمز البرنامج النصي وهيكل تحميل البيانات.
أخيرًا ، أغراض متعددة لهذا البرنامج النصي ، من التحميل المتغيرات في رمز ASP إلى أنظمة قاعدة البيانات أو الملفات لتخزين ملفات التحميل.
انقر على الرابط أدناه لتنزيل <a href = "http://www.asptoday.com/articles/images/20000316.zip"> الكود الروتيني لهذه المقالة.