يوجد حاليًا طريقتان شائعتان لتحميل الملفات ، أحدهما SmartUpload والآخر هو Commons FileUpload Apache.
هنا نقدم بشكل رئيسي استخدام الثاني. أولاً ، تحتاج إلى تحميل الملف والانتباه إلى العديد من المشكلات:
1 في النموذج ، أضف مساحة <إدخال type = "file" name = "myfile">
2 يجب تعريف تنسيق المحتوى للنموذج على أنه تنسيق متعدد/نموذج البيانات
3 مكتبة الفصل المطلوبة: 1 Commons-IO.Jar 2 Commons-Filepload-1.3.1.Jar
بعد ذلك ، دعونا نلقي نظرة على الاستخدام.
أولاً ، اقرأ الوثائق الرسمية لـ Apache Commons FileUpload ويمكنك العثور على الوظائف التالية المستخدمة بشكل شائع:
1 قم بإنشاء كائن تحليل ملف
نسخة الكود كما يلي: diskfileupload diskfileupload = new diskfileupload () ؛
2 بعد تحليل الملف ، ضعه في القائمة. نظرًا لأن مكتبة الفئة هذه تدعم عمليات تحميل الملفات المتعددة ، فسيتم تخزين النتيجة في القائمة.
نسخة الكود كما يلي: قائمة <Iboutem> list = diskfileupload.parserequest (request) ؛
3 احصل على ملفات تم تحميلها وأداء التحليل (ليس ضروريًا)
نسخة الكود كما يلي: ملف REMOTEFILE = ملف جديد (سلسلة جديدة (fileItem.getName (). getBytes () ، "UTF-8")) ؛
4 قم بإنشاء كائن جديد وأداء نسخة دفق
file1 = ملف جديد (this.getServletContext (). getRealPath ("المرفق") ، remotefile.getName ()) ؛ file1.getParentFile (). mkdirs () ؛ file1.createNewFile () ؛ inputStream ins = fileItem.getInputStream () ؛ OutputStream OUS = fileOutputStream جديد (file1) ؛ حاول {byte [] buffer = new byte [1024] ؛ int len = 0 ؛ بينما ((len = ins.read (buffer))> -1) ous.write (buffer ، 0 ، len) ؛ Out.println ("لحفظ الملف"+file1.getabsolutepath ()+"<br/>") ؛ } أخيرًا {ous.close () ؛ ins.close () ؛ }وبهذه الطريقة ، نكممل تحميل الملف.
fileupload.html
<form action = "servlet/uploadservlet" method = "post" enctype = "multipart/form-data"> <div align = "center"> <fieldset> <legend> تحميل الملف </legend> <br/> <div neved = "left"> upload file1 <div div align = left "left> name = "file1"/> </div> <div align = "left"> تحميل ملف </div> <div align = "left"> <input type = "file" name = "file2"/> </viv> <viv> <div align = 'left' align = 'left'> تعليمات ملف التحميل 2 </viv> <div align = 'left'> <input type = "text" name = "description2"/> </viv> </viv> <viv> <div align = 'left'> <input type = 'submit' value = "upload file"/> </fiv> </fieldset> </form>
web.xml
<Vervlet> <Sradlet-Name> ToploadServlet </revlet-name> <Servlet-class> com.test.hello.uploadservlet </servlet-class> </servlet> <Crevlet Mapping> <Sradlet-Name> uploadservlet </revlet-name>
exploadservlet.java
package com.test.hello ؛ import java.io.file ؛ import java.io.fileOutputStream ؛ import java.ioexception ؛ import java.io.inputstream ؛ import java.io.outputstream ؛ import java.io.printwriter javax.servlet.http.httpservlet ؛ استيراد javax.servlet.http.httpletrequest org.apache.commons.fileupload.fileItem ؛ import org.apache.commons.fileupload.fileuploadexception ؛ فئة التحميل العامة يمتد httpservlet { /*** مُنشئ للكائن. */ public uploadservlet () {super () ؛ } /*** تدمير servlet. <br> */ public void Dorner () {super.destroy () ؛ // فقط يضع سلسلة "تدمير" في log // ضع الكود الخاص بك هنا} /*** طريقة DOGE من servlet. <br> * * يتم استدعاء هذه الطريقة عندما يكون للنموذج طريقة قيمة العلامة الخاصة به تساوي الحصول عليها. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setCharacterEncoding("UTF-8"); Response.getWriter (). println ("يرجى تحميل الملف في post") ؛ } /*** طريقة dopost من servlet. <br> * * يتم استدعاء هذه الطريقة عندما يكون للنموذج طريقة قيمة العلامة الخاصة به تساوي النشر. *. servleTexception ، ioException {file file1 = null ، file2 = null ؛ سلسلة الوصف 1 = null ، description2 = null ؛ استجابة. setcharacterencoding ("UTF-8") ؛ request.setcharacterencoding ("UTF-8") ؛ استجابة. printWriter out = response.getWriter () ؛ diskfileupload diskfileupload = new diskfileupload () ؛ حاول {list <IptiTem> list = diskfileupload.parserequest (request) ؛ Out.println ("نقل جميع fileItems ... <br/>") ؛ لـ (fileItem fileItem: list) {if (fileitem.isformfield ()) {if ("description1" .equals (fileItem.getFieldName ())) {out.println ("Transfer to Description1 ... <br/>") ؛ الوصف 1 = سلسلة جديدة (fileItem.getString (). getBytes () ، "UTF-8") ؛ } if ("description2" .equals (fileItem.getFieldName ())) {out.println ("Travel to Description2 ... <br/>") ؛ الوصف 2 = سلسلة جديدة (fileItem.getString (). getBytes () ، "UTF-8") ؛ }} else {if ("file1" .equals (fileItem.getFieldName ())) {file remoteFile = new file (string new (fileItem.getName (). getBytes () ، "UTF-8")) ؛ Out.println ("السفر إلى file1 ... <br/>") ؛ out.println ("موقع العميل موقع:"+remotefile.getabsolutepath ()+"<br/>") ؛ file1 = ملف جديد (this.getServletContext (). getRealPath ("المرفق") ، remotefile.getName ()) ؛ file1.getParentFile (). mkdirs () ؛ file1.createNewFile () ؛ inputStream ins = fileItem.getInputStream () ؛ OutputStream OUS = fileOutputStream جديد (file1) ؛ حاول {byte [] buffer = new byte [1024] ؛ int len = 0 ؛ بينما ((len = ins.read (buffer))> -1) ous.write (buffer ، 0 ، len) ؛ Out.println ("لحفظ الملف"+file1.getabsolutepath ()+"<br/>") ؛ } أخيرًا {ous.close () ؛ ins.close () ؛ }} if ("file2" .equals (fileItem.getFieldName ()))) Out.println ("السفر إلى file2 ... <br/>") ؛ out.println ("موقع العميل موقع:"+remotefile.getabsolutepath ()+"<br/>") ؛ file2 = ملف جديد (this.getServletContext (). getRealPath ("المرفق") ، remotefile.getName ()) ؛ file2.getParentFile (). mkdirs () ؛ file2.createNewFile () ؛ inputStream ins = fileItem.getInputStream () ؛ OutputStream OUS = FileOutputStream جديد (file2) ؛ حاول {byte [] buffer = new byte [1024] ؛ int len = 0 ؛ بينما ((len = ins.read (buffer))> -1) ous.write (buffer ، 0 ، len) ؛ Out.println ("لحفظ الملف"+file2.getabsolutepath ()+"<br/>") ؛ } أخيرًا {ous.close () ؛ ins.close () ؛ }}} out.println ("تم الانتهاء من تحليل الطلب <br/> <br/>") ؛ }} catch (fileUploadexception e) {} out.println ("<! doctype html public/"-// w3c // dtd html 4.01 Transitional // en/">") ؛ Out.println ("<head> <title> servlet </title> </head>") ؛ out.println ("<body>") ؛ if (file1! = null) {out.println ("<viv>") ؛ out.println ("<div align = 'left'> file1 ؛ </viv>") ؛ out.println ("<div align = 'left'> <a href = '"+request.getContextPath ()+"/antainment/"+file1.getName ()+"' target = _blank>"+file1.getName ()+"</a>) ؛ out.println ("</div>") ؛ out.println ("</div>") ؛ } if (file2! = null) {out.println ("<div align = 'left'> file2 ؛ </viv>") ؛ out.println ("<div align = 'left'> <a href = '"+request.getContextPath ()+"/antainment/"+file2.getName ()+"' target = _blank>"+file2.getName ()+"</a>) ؛ out.println ("</div>") ؛ out.println ("</div>") ؛ } out.println ("<viv>") ؛ out.println ("<div align = 'left'> الوصف 1: </div>") ؛ out.println ("<div align = 'left'>") ؛ Out.println (Description1) ؛ out.println ("</div>") ؛ out.println ("</div>") ؛ out.println ("</div>") ؛ out.println ("<div align = 'left'> الوصف 2: </div>") ؛ out.println ("<div align = 'left'> الوصف 2: </div>") ؛ out.println ("<div align = 'left'>") ؛ out.println ("</div>") ؛ out.println ("</div>") ؛ Out.println ("</body>") ؛ out.println ("</html>") ؛ out.flush () ؛ out.close () ؛ } /*** تهيئة servlet. <br> * * throws servlexception في حالة حدوث خطأ */ public void init () يلقي servletexception {// ضع الكود الخاص بك هنا}}مثال تشغيل
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.