إن حزمة جرة المشاعين المشابك التي توفرها Apache هي في الواقع بسيطة للغاية لتحميل الملفات. في الآونة الأخيرة ، لا بد لي من استخدام Servlet/JSP للقيام بوظيفة تحميل الصورة. لقد وجدت الكثير من المعلومات عبر الإنترنت ، والتي يتم تقديم معظمها بناءً على إطار الدعامات. على الرغم من أن بعضهم يقدم أيضًا تحميل من المشاركة المشتركة ، إلا أن هذه الأمثلة قديمة نسبيًا ، ويتم التخلي عن بعض الفئات الآن.
من خلال ملخص البحث والدراسة ، تم الانتهاء من وظيفة التحميل أخيرًا. دعني أشاركها معك أدناه.
سيناريوهات الحالة
تحتاج واجهة إدارة المكتبة الخلفية إلى توفير وظيفة تحميل صور الكتب وأخيراً عرضها على الصفحة.
إدراك التأثير
أدخل صفحة إضافة الكتاب ، ويتم عرض الصورة الافتراضية "لا اختراق حتى الآن" (كل من الطول والعرض 200 بكسل) ، ويتم توفير زر "تحميل الصورة" ، كما هو موضح في الصورة التالية.
انقر فوق الزر "تحميل صورة" وتظهر واجهة التحميل من خلال نافذة الوضع ، كما هو موضح في الشكل أدناه.
حدد الصورة المحددة من خلال زر "Browse" ، انقر فوق الزر "تحميل" للتحميل. إذا كان التحميل ناجحًا ، فسوف يظهر موجه ناجح. بعد أن ينقر المستخدم على "موافق" ، يغلق النافذة المنبثقة ويعرض الصورة الجديدة تلقائيًا على الصفحة ، كما هو موضح في الشكل أدناه.
تنفيذ الكود
①first إنشاء كتاب إضافة صفحة: bookadd.jsp
يتم استخدام العلامة المخفية مع معرف الصفحة Photo_id لتخزين مسار الصورة ، وهو مناسب لتقديم الخلفية وتخزينه في قاعدة البيانات ، ويتم استخدام <img> مع معرف IMG_ID لعرض الصور. يتم تخزين جميع الصور تحت الخادم لسهولة القراءة. ثم ، مفتاح JS ، انقر فوق الزر لإيقاف صفحة التحميل من خلال نافذة الوضع. عند ظهور نافذة الوضع ، يتم تعريف فوز متغير ، والذي يتم استخدامه للحصول على قيمة مسار الصورة المنقولة مرة أخرى بواسطة نافذة الوضع.
(ملاحظة: نظرًا لمشكلات الأمان ، لا يمكن تخزين الصور حسب الرغبة. إذا تم نشر المشروع على الخادم ، فلا يمكن عرض الصور إلا تحت الخادم. إذا كان يجب عليك قراءة الصور التي لا تكون ضمن الخادم الحالي ، فأنت بحاجة إلى تكوين الدليل الافتراضي للخادم)
<html> <head> <title> إضافة كتاب </title> <script type = "text/javaScript"> // افتح وظيفة صفحة التحميل openupload () {var win = window.showmodaldialog ("<٪ = root ٪>/admin/pookupload.jsp" ، "،" dalogwid: 300px ؛ no if (win! = null) {document.getElementById ("photo_id"). value = win ؛ document.getElementById ("img_id"). src = "<٪ = root ٪>/"+win ؛ }} </script> </head> <body> <h5> أضف كتابًا </h5> <hr/> <p> غلاف الكتاب: <label> <input type = "hidden" id = "photo_id" name = "photo" value = "images/noimg.png"> <input type = "buttin" id = "img_id" src = "<٪ = root ٪>/images/noimg.png"> </billy> </body> </html> ② Create تحميل صفحة صورة ، bookupload.jsp
لاحظ أنه يجب عليك تحديد العلامة <Case>. يمكن إرجاع البيانات إلى النموذج الأصل عند إغلاق نافذة الوضع الحالي. تحتاج علامة <Porm> أيضًا إلى تعيين خاصية enctype = "multipart/form-data" بحيث يمكن الحصول على الملفات المقدمة بواسطة الخلفية. انقر فوق الزر "تحميل" لنقل الملفات إلى الخلفية. أبرز ما تبقى هو معالجة تحميل الخلفية.
<html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = gbk"> <meta http-equiv = "pragma" content = "no-cach"/> <span style = "color: #ff0000 ؛" <h5> تحميل الصورة </h5> <hr/> <p style = "color: red"> $ {requestscope.errormsg} </p> <form id = "form1" name = "form1" Action = "<٪ = root ٪>/bookservlet؟ 3m! </viv> <div> <input type = "file" name = "file_upload"/> </viv> <viv> <input type = "submit" value = "expload"/> </fire> </form> </body> </html> ③ ابتكار servlet العادي ، فقط بعض الرموز الرئيسية الواردة أدناه
جزء الرمز الأحمر هو رمز المفتاح الذي تم تحميله ، ويتم استخدام الآخرين كزينة. أكمل هذه الخطوات الثلاث وسيتحقق تحميل بسيط.
يمتد Public Class Servlet httpservlet {private string uploadpath = "eshop/upload/" ؛ // دليل لتحميل الملفات الخاصة سلسلة temppath = "eShop/UploadTMP/" ؛ // دليل الملفات المؤقتة الخاصة ServerPath = null ؛ private int sizemax = 3 ؛ // الحد الأقصى للصورة الحد الأعلى للسلسلة الخاصة [] filetype = new string [] {". jpg" ، ". gif" ، ". BMP" ، ". DOGED VOID Public Void (HttpservletRequest request ، httpservletresponse) يلقي ServleTexception ، ioException {serverPath = getServletContext (). getRealPath ("/"). استبدال ("//" ، "/") ؛ // تنفيذ عند تهيئة servlet. إذا لم يكن دليل الملف الذي تم تحميله موجودًا ، فسيقوم تلقائيًا بإنشاء (! ملف جديد (ServerPath+UploadPath) .isdirectory ()) {ملف جديد (ServerPath+UploadPath) .mkdirs () ؛ } if (! ملف جديد (serverpath+temppath) .isdirectory ()) {file new (serverpath+temppath) .mkdirs () ؛ } <span style = "color: #ff0000 ؛"> diskfileItemFactory Factory = new DiskfileItemFactory () ؛ </span> factory.SetSizeSethReshold (5*1024) ؛ // الحد الأقصى لمصنع ذاكرة التخزين المؤقت. جرب {<span style = "color: #ff0000 ؛"> ervice <IpiTEM> عناصر = upload.parserequest (طلب) ؛ </span> // الحصول على جميع قائمة الملفات لـ (fileItem ite: items) {// get firdame ، {file filed = filed str strup = "color: #ff0000 ؛" item.getName (). tolowercase () ؛ if (filename.endswith (fileType [0]) || filename.endswith (fileType [1]) || filename.endswith (fileType [2]) || fileName.endswith (filetype [3]) || filename.endswith (filetype [4]) uuid.randomuuid (). tostring () ؛ FilePath = serverPath+UploadPath+Uuid+Filename.SubString (filename.lastindexof (".")) ؛ <span style = "color: #ff0000 ؛"> item.write (ملف جديد (filepath)) ؛ </span> printWriter pw = desponse.getWriter () ؛ pw.write ("<script> ALERT ('تم تحميله بنجاح') ؛ window.RETURNVALUE = '"+UploadPath+uuid+filename.substring (filename.lastindexof (".")+"' ؛ window.close () ؛ </primt>") ؛ pw.flush () ؛ pw.close () ؛ } آخر {request.setAttribute ("errormsg" ، "فشل التحميل ، يرجى تأكيد وجود الملف الذي تم تحميله وهو صورة!") ؛ request.getRequestDispatcher ("/admin/pookupload.jsp"). }}}} catch (استثناء e) {E.PrintStackTrace () ؛ request.setattribute ("errormsg" ، "فشل التحميل ، يرجى تأكيد أن حجم الملف الذي تم تحميله لا يمكن أن يتجاوز"+sizemax+"m") ؛ request.getRequestDispatcher ("/admin/pookupload.jsp"). }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.