مكتوبة من قبل:
في الأيام القليلة الماضية ، درست تحميل ملفات webuploader. سجلات المدونة السابقة أمثلة على استخدام WebUploader لتحميل الملفات ببساطة. اليوم ، سأقوم أيضًا بتسجيل أمثلة تحميل شظايا ونقاط التوقف. في حديقة المدونة ، شاهدت أيضًا بعض المعلومات. في الأساس ، فإن معالجة البيانات الخلفية للبيانات هي servlets أو springMVC. نظرًا لأن المشروع الأخير كان دائمًا Struts2 ، فسنستخدم الإجراء في Struts2 لمعالجة البيانات لتحقيق تأثير تحميل الملفات في القطع.
1. ما هو Shard تحميل؟
كما يوحي الاسم ، فهذا يعني تقسيم الملف إلى أجزاء ، أي السماح بتقسيم ملف إلى عدة ملفات صغيرة ، ثم تحميله. ميزة ذلك هي أنه يسهل تحميل الملفات الكبيرة.
2. الأفكار العامة لتحميل Shard:
1. في صفحة المكتب الاستقبلي ، حدد الملف وانقر فوق الزر للتحميل.
2. يقسم WebUploader الملفات التي تم تحميلها إلى أرقام محددة ويرسلها إلى الخادم الخلفي واحدًا تلو الآخر.
3. يستقبل الخادم الملفات الصغيرة المقسمة ويخزنها في مجلد مؤقت.
4. بعد استلام الخادم الملف الصغير المقسوم ، تقوم الصفحة الأمامية بتنفيذ وظيفة التحميل الناجحة.
5. في وظيفة التحميل الناجحة ، أرسل طلبًا إلى الخادم وطلب دمج الملفات الصغيرة في ملف كامل.
6. خلفية الخادم تدمج الملفات وحذف الملفات المؤقتة التي تخزن الملفات الصغيرة بعد اكتمال الدمج.
بعد فهم العملية العامة لتحميل Shard ، يرجى الانتقال إلى العرض التوضيحي مباشرة.
صفحة مكتب الاستقبال:
<٪@ page contentType = "text/html ؛ charset = utf-8" language = "java" ٪> <٪ scheme = request.getScheme () ؛ String serverName = request.getServerName () ؛ String ContextPath = request.getContextPath () ؛ int port = request.getServerPort () ؛ // الوصول إلى موقع الويب وسلسلة المسار baseurl = scheme + ": //" + servername + ":" + port + contextpath ؛ request.setAttribute ("baseurl" ، baseurl) ؛ ٪> <html> <head> <title> مثال بسيط لتحميل الملفات باستخدام مجزأة </title> <٪-تقديم أنماط css-٪> <link href = "$ {baseurl} /webuploader0.1.1.5/webuader.css" rele noflost rel = "stylesheet" type = "text/css"/> <script src = "$ {baseurl} /ligerui2/jquery/jquery-1.9.0.min.js" type = "text/javaScript"> </script> <٪-تقديم مكونات تحميل الملف-٪> <slect src = "$ {baseurl} /webuploader0.1.5/webuploader.min.js"> </script> <script type = "text/javaScript مكان يسهل تجاهله. [File '] يضع اسم FileVal: "التحميل". تم تمكين الملفات التي تم تحميلها/* إذا تم تمكين تحميل Shard ، فسيكون ذلك على سبيل المثال ، على سبيل المثال ، على سبيل المثال ، يجب أن تكون الشريحة الأولى هي المركز الأول. الافتراضي ، سوف يتسبب في إعادة تنظيم ترتيب القبول. مضغوط ، إذا كان JPEG ، فسيتم ضغطه وتحميله مرة أخرى قبل التحميل! $ ("#filelist"). html ("") $ ("#filelist"). $ ("#state"). النص ("التحميل ...") ؛ $ .post ("$ {baseurl} /mergefile" ، // system {guid: exploader.options.formdata.guid ، kunks: math.ceil (file.size /(5 * 1024 * 1024) ، fileName: / /فشلت تحميل الملف. $ ("#btnclick"). id = "uploader-demo"> <div id = "fileList"> حدد ملف </div> <button id = "btnclick"> بدء تحميل </button> <button id = "btncancel"عمل الخلفية:
/** * الوصف: com.ims.action * المؤلف: أحد عشر * التاريخ: 2017/12/26 10:50 */@controller ("fileAction") fileAction public class {/ * المعلمات ذات الصلة لكل ملف صغير يستخدم لتلقي طلب تجزئة * // تذكر أن توفر طريقة الحصول على مجموعة محددة // نفس اسم "القيمة" لقيمة form = file). // اسم الملف السلسلة الخاصة uploadFilename ؛ // قم بتحميل نوع السلسلة الخاصة uploadContentType ؛ ] يتم استخدام كل من السلسلة العامة ؛ // دمج وتقسيم كلاهما لتلقي وإرسال طلبات دمج اسم الملف العام ؛ // اسم الملف قطع السلسلة العامة ؛ // رقم القطاع // عند تحميل الملفات في شظايا ، سيتم استدعاء هذه الطريقة في كل مرة يتم تحميل ملف صغير ، وهو لا يختلف عن ملفات الحفظ العادية uploadfile2 () يلقي الاستثناء {String str = "d:/upload44/divide/" ؛ // ملف حفظ الملف // حفظ مسار كل سلسلة ملفات صغيرة realPath = str + guid + "/" + chunk ؛ ملف tmp = ملف جديد (RealPath) ؛ fileUtils.copyfile (تحميل ، tmp) ؛ System.out.println ("تحميل ملف"+UploadFilename+"، والذي يحظر:"+chunk+"، الحجم:"+(epload.length ()/1024/1024)+"M") ؛ }. // إنشاء مجلد دمج جديد (path) .mkdir () ؛ // إنشاء ملف ملف دمج newFile = ملف جديد (مسار + اسم الملف) ؛ if (! newFile.Exists ()) {newFile.CreateNewFile () ؛ } fileOutputStream OutputStream = newOutputStream (newFile ، true) ؛ // إضافة ملف ملف إلى byte [] byt = new byte [10 * 1024 * 1024] ؛ int len ؛ fileInputStream temp = null ؛ // ملف Shash لـ (int i = 0 ؛ i <integer.parseint (kunks) ؛ i ++) {// "d:/upload44/divide/" + guid + "/" + i لحفظ مسار الملف الصغير المقسوم = ملف جديد (ملف جديد (//upload44/divide/" +" + ". بينما ((len = temp.read (byt))! = -1) {system.out.println (len) ؛ outputStream.write (byt ، 0 ، len) ؛ } temp.close () ؛ } // عند الانتهاء من جميع عمليات الكتابة ، يمكن إغلاق الدفق outputstream.close () ؛ // delete shard file string path2 = "d:/upload44/divide/" + guid ؛ FileUtils.deletedirectory (ملف جديد (path2)) ؛ // حذف جميع المحتويات في نظام الدليل. } الملف العام getUpload () {return upload ؛ } public void setupload (تحميل الملف) {this.upload = upload ؛ } السلسلة العامة getUploAdfilename () {return UploadFilename ؛ } public void setuploadfilename (سلسلة exploadFiLename) {this.uploadfilename = UploadFilename ؛ } السلسلة العامة getUploAdContentType () {return UploadContentType ؛ } public void setuploadContentType (سلسلة uploadContentType) {this.uploadContentType = UploadContentType ؛ }}تكوين struts.xml:
<action name = "uploadfile2" method = "toploadfile2"> </socation> <action name = "mergefile" method = "mergefile"> </uction>
حسنًا ، هنا ، يتم تحميل نقطة توقف تجزئة الملفات البسيطة.
بالمناسبة ، تستقبل الخلفية فقط بعض المعلمات البسيطة ، وبالطبع هناك أكثر من المعلمات المذكورة أعلاه التي تم تمريرها من WebUploader في الواجهة الأمامية. لذلك ، يمكنك تعلم استخدام وضع تصحيح الأخطاء F12 لعرض الطلبات المرسلة ومعلمات الطلب ذات الصلة. لن أتحدث عن ذلك هنا.
تشغيل لقطة الشاشة:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.