1. مبدأ تحميل الملف
1. المتطلبات الأساسية لتحميل الملف:
أ. يجب نشر طريقة النموذج
ب. يجب أن يكون envype لنموذج النموذج متعددا/بيانات النموذج (يحدد طريقة طلب النشر ونوع بيانات هيئة الطلب)
ج. نوع الإدخال المقدم في النموذج هو مجال تحميل ملف نوع الملف.
2. استخدم مكونات الطرف الثالث لتحقيق تحميل الملفات
1.
JAR: المشاع fileupload.jar
العموم-IO.JAR
2. الفئة الأساسية أو الواجهة
DiskfileItemFactory: اضبط البيئة
setSizeTheReshold public (int sizethreshold): اضبط حجم المخزن المؤقت. الافتراضي هو 10 كيلو بايت.
عندما يتجاوز الملف الذي تم تحميله حجم المخزن المؤقت ، سيقوم مكون FileUpload بتحميل الملف باستخدام ذاكرة التخزين المؤقت للملف المؤقت
public void setRepository (java.io.file ropository): قم بتعيين الدليل حيث يتم تخزين الملفات المؤقتة. بشكل افتراضي ، دليل تخزين الملفات المؤقت للنظام.
servletfileupload: فئة التحميل الأساسية (الوظيفة الرئيسية: تحليل محتوى الجسم للطلب)
Boolean IsmultipartContent (httpservletrequest؟ طلب): يحدد ما إذا كان enctype من نموذج المستخدم من نوع multipart/form-data.
قائمة parserequest (طلب httpservletrequest): تحليل المحتوى في هيئة الطلب
setFilesizeMax (4*1024*1024) ؛ // اضبط حجم ملف تم تحميله الواحد
expload.setsizemax (6*1024*1024) ؛ // اضبط حجم الملف الكلي
FileItem: يمثل حقل إدخال في النموذج.
منطقية Isformfield (): هل هو مجال طبيعي
String getFieldName: احصل على اسم الحقل للحقل العادي
سلسلة getString (): احصل على قيمة الحقل العادي
InportStream getInputStream (): احصل على دفق الإدخال من الحقول التي تم تحميلها
String getName (): احصل على اسم الملف الذي تم تحميله
مثال: قم أولاً بإنشاء مجلد ملف في دليل الويب الخاص بـ Web-Inf ، أي أنه يجب تحميل جميع الملفات هنا ، وهو تجنب الوصول المباشر من قبل الآخرين.
1. احصل على المسار الحقيقي للملفات
String StorePath = getServletContext (). getRealPath ("/web-inf/files") ؛
2. قم بإعداد البيئة
DiskfileItemFactory Factory = New DiskfileItemFactory () ؛ // حيث يكون التخزين المؤقت الافتراضي وتخزين الملفات المؤقتة
3. أمر القمع طريقة تسليم النموذج
Boolean Ismultipart = servletfileupload.ismultipartContent (request) ؛ if (! isMultipart) {system.out.println ("طريقة التحميل خطأ!") ؛ يعود؛ }4. ملف تحميل الملف الأساسي
servletfileupload تحميل = جديد servletfileupload (المصنع) ؛ 5. تحليل // PARSE LIST <IPITEM> عناصر = upload.parserequest (request) ؛ لـ (fileItem item: العناصر) {if (item.isformfield ()) {// الحقل العادي ، تم إرسال اسم FieldName string بواسطة form = item.getfieldname () ؛ // اسم حقل معلومات النموذج FieldValue = item.getString () ؛ // نموذج معلومات قيمة الحقل system.out.println (FieldName+"="+FieldValue) ؛ } آخر // معالجة الملف {inputStream in = item.getInputStream () ؛ // تحميل اسم الملف c: /users/administrator/desktop/a.txt name = item.getName () ؛ // فقط بحاجة إلى A.TXT String Filename = name.subString (name.lastindexof ("//")+1) ؛ // إنشاء سلسلة دفق الإخراج storefile = storepath+"//"+filename ؛ // قم بتحميل ملف Save OutdureStream Out = جديد fileOutputStream (storefile) ؛ بايت [] ب = بايت جديد [1024] ؛ int len = -1 ؛ بينما ((len = in.read (b))! =-1) {out.write (b ، 0 ، len) ؛ } in.close () ؛ // أغلق الدفق Out.close () ؛ }}اكتب نموذجًا
<٪@ page language = "java" import = "java.util.*" pageencoding = "utf-8" ٪> <٪ string path = request.getContextPath () ؛ String basePath = request.getScheme ()+": //" request.getServerName ()+"+request.getserport () "-// w3c // dtd html 4.01 Transitional // en"> <html> <head> <base href = "<٪ = basepath ٪>"> <title> my jsp '1.jsp' page </title> <meta http-equiv = "content =" no-cache content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "keywords" content = "keyword1 ، keyword2 ، keyword3"> <meta http-equiv = "description description =" this is is my part "<! HREF = "STYLES.CSS">-> </head> <body> <form> <torm action = "$ {pagecontext.request.contextpath}/servlet/uploadservlet2" method = "post" enctype = "multipart/form-data" name = "f1"/> <br/> <input type = "file" name = "f2"/> <br/> <input type = "submit" value = "save"/> </form> </body> </html>اكتب Servlet Servlet: ToploadServlet2
package com.liuzhen.upload ؛ استيراد java.io.fileOutputStream ؛ استيراد java.io.ioException ؛ استيراد java.io.inputStream ؛ استيراد java.io.outputstream ؛ import java.util.list ؛ import javax.servlet javax.servlet.http.httpservletrequest ؛ import javax.servlet.http.httpservletrespons org.apache.commons.fileupload.disk.diskfileItemFactory ؛ import org.apache.commons.fileupload.servlet.servletfileUpload ServleTexception ، ioException {// قم بتعيين طلب الترميز. setcharacterencoding ("UTF-8") ؛ استجابة. جرب {// تحميل سلسلة الملفات storepath = getServletContext (). getRealPath ("/web-inf/files") ؛ // اضبط البيئة DiskfileItemFactory Factory = new DiskfileItemFactory () ؛ . if (! isMultipart) {system.out.println ("طريقة التحميل غير صحيحة!") ؛ يعود؛ } servletfileupload upload = new ServletFileUpload (Factory) ؛ // parse list <IptiTem> عناصر = upload.parserequest (request) ؛ لـ (fileItem item: العناصر) {if (item.isformfield ()) {// الحقل العادي ، تم إرسال اسم FieldName string بواسطة form = item.getfieldname () ؛ // اسم حقل معلومات النموذج FieldValue = item.getString () ؛ // نموذج معلومات قيمة الحقل system.out.println (FieldName+"="+FieldValue) ؛ } آخر // معالجة الملف {inputStream in = item.getInputStream () ؛ // تحميل اسم الملف c: /users/administrator/desktop/a.txt name = item.getName () ؛ // فقط بحاجة إلى A.TXT String Filename = name.subString (name.lastindexof ("//")+1) ؛ // إنشاء سلسلة دفق الإخراج storefile = storepath+"//"+filename ؛ // قم بتحميل ملف Save OutdureStream Out = جديد fileOutputStream (storefile) ؛ بايت [] ب = بايت جديد [1024] ؛ int len = -1 ؛ بينما ((len = in.read (b))! =-1) {out.write (b ، 0 ، len) ؛ } in.close () ؛ // أغلق الدفق Out.close () ؛ }}} catch (fileUploAdexception e) {رمي new runTimeException (e) ؛ }} public void dopost (httpservletrequest request ، httpservletresponse) يلقي servleTexception ، ioException {doget (request ، response) ؛ }}الملف الذي تم تحميله موجود في تطبيق Tomcat.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.