قم أولاً بإلقاء العنوان ، http://fex-team.github.io/webuploader/
هناك وثيقة حالة تجريبية كاملة نسبيا. تضيف هذه المقالة بشكل أساسي عددًا كبيرًا من التعليقات استنادًا إلى تحميل الملف وتحميل الصور ، مما يضمن أساسًا أن كل سطر من الكود لديه تعليقات للمساعدة في الفهم. إنها نسخة محسّنة من عرض الموقع الرسمي. آمل أن يساعد الجميع على فهم المكون الإضافي بشكل أفضل.
أولا ، تحميل الملف
jQuery (function () {var $ = jQuery ، $ list = $ ('#thelist') ، $ btn = $ ('#ctlbtn') ، state = 'pending' ، uploader ؛ // initialization ، يمكنك الوصول مباشرة BASE_URL + '/JS/UPLOADER.SWF ، // أرسل إلى رمز الخلفية للمعالجة وحفظه على خادم الخادم:' http://webuploader.duapp.com/server/fileud.php '، // حدد الزر لتحديد الملف. }) ؛ </h4> '<p> انتظر التحميل ... "#' + file.id) ، // ابحث عن التقدم في الفصل تحت $ li ، وتعريفه على أنه $ في المئة ----- لماذا تبحث أولاً عن إنشاء $ في المئة = $ li.find ( </div> ' +' </div> '). هذا الحدث عند التحميل بنجاح تحميل. TOPLOADER.ON ('UPLOADERROR' ، الدالة (ملف) {// الحدث الذي يتم تشغيله عند إضافة الملف ، FindState ، ويضيف النص كخطأ في التحميل $ ('#'+file.id). "TOPLOADCOMPLET" ، دالة (ملف) {// Call $ ('#' file.id). {state = 'تحميل' ؛ التحميل ') ؛}}) ؛ثم تحميل الصورة
jQuery (function () {// تعيين jQuery إلى متغير عالمي var $ = jQuery ، $ list = $ ('#fileList') ، // تحسين شبكية العين ، تحت شبكية العين ، هذه القيمة 2 ، حجم نسبة بكسل الجهاز = 100 * thumbnaiLeainain ، تحميل مثيل التحميل ؛ "http://webuploader.duapp.com/server/filepload.php ، // حدد زر الملف. "GIF ، JPG ، JPEG ، BMP ، PNG" ، Mimetypes: "Image/*'}}) ؛ للحصول على معلومات "<div> ' + name +' </viv> ' +' </div> ') ، $ img = $ li.find (' img ') التفاعل // رد الاتصال له معلمتان. thumbnailheight) ؛ $ (<p> <spl> </spans> </p>). #'+file.id). addclass (' Upload-State-done ') ؛ $ (<div> </viv> ').فيما يلي رمز خلفية Java ، يستخدم للحصول على ملفات تم تحميلها وكتابة المسار الحقيقي للملفات التي تم تحميلها إلى الخادم
1. أولاً وقبل كل شيء ، يجب أن ننشئ موقع تخزين للملفات التي تم تحميلها. ينقسم الموقع العام إلى مجلدات مؤقتة وحقيقية. ثم نحتاج إلى الحصول على المسارات المطلقة لهذين المجلدين. في servlet ، يمكننا القيام بذلك.
servletContext application = this.getServletContext () ؛ String tempDirectory = application.getRealPath (constant.temp_directory) + "/" ؛ سلسلة alledirectory = application.getRealPath (constant.real_directory) + "/" ؛
ثم قم بإنشاء مصنع ملف ، أي مستودع ، تشير المعلمة إلى حجم تخزين التدفق.
نسخة الكود كما يلي: FileItemFactory Factory = New DiskfileItemFactory (constant.size_threshold ، ملف جديد (TempDirectory)) ؛
servletfileupload تحميل = جديد servletfileupload (المصنع) ؛
2. قم بإعداد الملفات التي تم تحميلها
upload.setsizemax (500*1024*1024) ؛ // قم بتعيين القيمة القصوى لهذا التحميل إلى 500m3 ، وحوض جسم الطلب ، والحصول على ملف التحميل ، واكتب المسار الحقيقي دون إلقاء استثناء
List <IbleItem> list = Upload.ParsereQuest (request) ؛ iterator <IpiTItem> iter = list.iterator () ؛ بينما (iter.hasnext ()) {fileItem item = iter.next () ؛ يتم استخدام //item.isformfield () لتحديد ما إذا كان الكائن الحالي هو بيانات حقل نموذج الملف. إذا كانت قيمة الإرجاع صحيحة ، فهذا يعني أنه ليس حقل نموذج عادي إذا كان (item.isformfield ()) {system.out.println ("حقل النموذج العادي" +item.getFieldName ()) ؛ System.out.println (item.getString ("UTF-8")) ؛ } آخر {//system.out.println (حقل نموذج fore " + item.getFieldName ()) ؛ /** فقط حقل نموذج الملف يكتب المحتويات في الكائن إلى المجلد الحقيقي*/string lastPath = item.getName () ؛ // الحصول على اسم الملف المحمّل LastPath = lastPath.subString (lastPath.lastindexof (".")) ؛ اسم ملف السلسلة = uuid.randomuuid (). toString (). استبدال ("-" ، "") + lastPath ؛ item.write (ملف جديد (اسم ملف RealDirectory+)) ؛ package com.lanyou.support.servlet ؛ import java.io.file ؛ import java.io.ioException ؛ import java.io.printwriter ؛ import java.util.list ؛ import javax.servlet.servletexception ؛ import javax.servlet.http.http.httplet ؛ javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد net.sf.json.jsonobject org.apache.commons.fileupload.disk.diskfileItemFactory ؛ import org.apache.commons.fileupload.servlet.servletfileUpload ؛ import org.apache.commons.logging.log ؛ import org.apache.commons.logging.loggange ؛ org.apache.commons.logging.logfactory ؛ import org.apache.struts2 logger static static static = logfactory.getLog (fileUpload.class) ؛ Override محمية void doget (httpservletrequest req ، httpservletresponse resp) يلقي servleTexception ، ioException {dopost (req ، resp) ؛ } override void dopost (httpservletrequest req ، httpservletresponse resp) يلقي servletexception ، ioException {// upload file مع type 1 event string t = req.getparameter ("t") == null؟ "1": req.getParameter ("t") .trim () ؛ مسار السلسلة = "" ؛ jsonobject ob = new jsonobject () ؛ جرب {// Task لتغليف كل عنصر في رسالة الطلب في كائن DiskfileItem منفصل // حفظه في الذاكرة عندما تكون عناصر الملف المحمّلة صغيرة ، وحفظها في القرص عندما يكون القرص صفرًا. servletfileupload servletfileupload = new ServletFileUpload (المصنع) ؛ // قم بتعيين ملف servletfileupload.setsizemax (1024 * 1024 * 2) ؛ // الحد الأقصى لبيانات ServletFileUpload.setFilesizemax (2 * 1024 * 1024) ؛ servletfileupload.SetheAderenCoding ("UTF-8") ؛ // حل مشكلة أسماء الملفات المشوهة // حل هيئة الطلب ، والحصول على الملف المحمّل ، واكتب المسار الحقيقي إذا لم يتم إلقاء استثناء/الحصول على قائمة الملفات وفقًا لقائمة الطلبات <IPITITEM> fileItemSlist = servleTfilePload.parsereest. // قم بإحضار كائن ملف منفصل من قائمة الملفات لـ (fileItem item: fileItemSlist) {// تحديد ما إذا كان الملف هو نوع النموذج العادي ، حيث يدخل نوع الملف الحكم إذا (! item.isformfield ()) {// إذا كان الملف الذي تم تحميله أكبر من الحجم المحدد ، فأعود إذا (item.Itsizeize ()> 2 * 1024 * 1024) {return ؛ } // system.out.println ("حجم الملف الذي تم تحميله:"+item.getSize ()) ؛ // system.out.println ("تحميل نوع الملف:"+item.getContentType ()) ؛ // system.out.println ("تحميل اسم ملف:"+item.getName ()) ؛ // تحميل اسم الملف filename = item.getName () ؛ سلسلة ent = "" ؛ // نوع المحتوى if (item.getContentType (). equalsignoreCase ("Image/x-png") || item.getContentType (). equalsignorecase ("Image/Png")) {ent = ".png" ؛ } if if (item.getContentType (). equalsInsIngRecase ("image/gif")) {ent = ".gif" ؛ } if if (item.getContentType (). equalsInsIgnoreCase ("Image/BMP")) {ent = ".bmp" ؛ } if if (item.getContentType (). equalsInsIgnoreCase ("Image/pjpeg") || item.getContentType (). asealIgnoreCase ("image/jpeg")) {ent = ".jpg" ؛ } // ما هو التنسيق هو الحصول على الملف إذا (filename.lastindexof (".")! = -1) {ent = filename.substring (fileName.lastindexof (".")) ؛ } filename = "ev_" + system.currentTimeMillis () + ent ؛ // تحديد مسار الملف ، اعتمادًا على بنية المجلد الخاص بك ، قد تحتاج إلى إجراء تغييرات إذا (T.equals ("1")) {path = "Upload/EV/" + filename ؛ } آخر {path = "upload/pk/" + filename ؛ }. if (! file.getParentFile (). } item.write (file) ؛ // logger.info (path) ؛ // استراحة؛ OB.Accumulate ("url" ، path) ؛ }} resp.setContentType ("text/html ؛ charset = utf-8") ؛ resp.getWriter (). الكتابة (ob.toString ()) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {// استجابة عميل // resp.setContentType ("text/html ؛ charset = utf-8") ؛ // resp.getWriter (). الكتابة (OB.ToString ()) ؛ }}}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.