يعمل المدون مؤخرًا على مشروع إنترانت حيث يمكن الوصول إلى البيانات الخارجية داخليًا ، لكن لا يمكن للوصول إلى البيانات الداخلية من الخارج ، مما يؤدي أيضًا إلى عدم قدرة الملف على تحميله. لذلك ، يتبع المدون نهجًا مختلفًا ويقوم بإنشاء مجلد على الخادم المحلي خصيصًا لتخزين البيانات التي تم تحميلها.
البيئة: JDK ، Tomcat
1. تحميل الملفات في مكتب الاستقبال (تحميل AJAX)
<type type = "file" name = "annexurl" id = "annexurl" multives = "multible"/>
حيث يتم تعيين MOUNTION = "MONITION" لتحميل ملفات متعددة
دالة exploadFile () {var files = document.getElementById ("annexurl"). files ؛ if (files.length! = 0) {var formData = new formData () ؛ لـ (var i = 0 ؛ i <files.length ؛ i ++) {var file = files [i] ؛ formData.append (file.name ، file) ؛ } $ .ajax ({url: 'cdc/public/savefiles' ، اكتب: 'post' ، ذاكرة التخزين المؤقت: false ، البيانات: formdata ، // هذه المعلمة فريدة من نوعها بالنسبة إلى jQuery ولا يتم تسلسلها ، لأننا لا نناسب المحتوى هنا. تم تمريره من خلال contentType: false ، النجاح: الدالة (Data) {Save (data.data) ؛ } آخر {save () ؛ }}} هنا نحتاج إلى استخدام كائن FormData لتغليف كائن الملف. يتم استخدام طريقة حفظ () لحفظ مسار الملف الذي تم إرجاعه بعد التحميل ، وحفظه في قاعدة البيانات لسهولة التنزيل.
2. تلقي الملفات في الخلفية وتحميلها على الخادم
// تحميل ملفات متعددة ، إرجاع مجموعة من الكائنات (عنوان المرفق ، الاسم) requestmapping (value = "SaveFiles" ، method = requestMethod.post) responsebody public jsonobject savefiles (httpservletrequest request ، httpservletresponse) حاول {request.setcharacterencoding ("UTF-8") ؛ } catch (UnsupportedEncodingException e) {E.PrintStackTrace () ؛ } Collection <Bart> parts = null ؛ حاول {parts = request.getParts () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ } catch (servleTexception e) {E.PrintStackTrace () ؛ } iterator <Bart> iterator = parts.iterator () ؛ // مجموعة الأسماء ، التي تم إرجاعها إلى قائمة المقدمة <string> list = new ArrayList <> () ؛ بينما (iterator.hasnext ()) {part part = iterator.next () ؛ // إنشاء اسم الملف الحقيقي المخزن الفعلي (فريد) // لا أعرف لماذا ، يجب أن يحتوي تحميل الملف على اسم الملف الذي تم الحصول عليه ، وإلا فإن بناء جملة اسم الملف أو اسم الدليل أو علامة الصوت غير صحيح. لا يوجد مثل هذا القيود على تحميل الصورة // اسم الملف ، وحفظ قاعدة البيانات ، واستخدمها لعرض اسم السلسلة = part.getName () ؛ string realName = uuid.randomuuid (). toString () + name ؛ list.add (name + "&&" + realName) ؛ ///home/tomcat/apache-tomcat-9.0.1/files String RealPath = "D:" + file.separator + "Apache-tomcat-8.5.15" + file.separator + "files" ؛ // string RealPath = "C:" + file.separator + "XHJ224" + file.separator + "software" + file.separator + "apache-tomcat-9.0.1" + file.sparator + "files" ؛ // string RealPath = file.separator + "home" + file.separator + "tomcat" + file.separator + "apache-tomcat-9.0.1" + file.separator + "files" ؛ ملف الملف = ملف جديد (RealPath) ؛ // إذا لم يكن الدليل موجودًا (! file.isdirectory ()) {// قم بإنشاء ملف دليل تحميل الملف. mkdirs () ؛ } // المسار الحقيقي لسلسلة تخزين الملفات filepath = realPath + file.separator + RealName ؛ حاول {part.write (filePath) ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }} jsonobject.put ("البيانات" ، قائمة) ؛ إرجاع jsonobject ؛ } تضيف مجموعة القائمة سلسلة تم توصيلها باسم الملف واسم الملف الحقيقي ، وهو مطلوب لاحقًا. الاسم الحقيقي هو منع التعارض بين أسماء الملفات التي تم تحميلها المتعددة. RealPath هو مسار حفظ الملف. أنظمة التشغيل المختلفة لها مسارات مختلفة. يتم وضع RealPath في وضع أفضل تحت Tomcat لتسهيل Project Porting.
عندما يكون ملف File.Separator هو فاصل المسار ، والذي يمكنه تلقائيًا تحديد نظام التشغيل الذي هو ويستخدم فاصل مسار مختلف (Windows هو "/" ، Linux "/"). وأخيرا إرجاع القائمة إلى مكتب الاستقبال.
تم تجميع هذه المقالة في "ملخص لتقنيات تشغيل Java Upload" ، وكل شخص مرحب به للتعلم والقراءة.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.