1. แพ็คเกจที่จำเป็น:
1. Commons-Fileupload -1.2.1.jar:
ดาวน์โหลดที่อยู่
http://commons.apache.org/downloads/download_fileupload.cgi
2. Commons-io-1.4.jar:
ดาวน์โหลดที่อยู่
http://commons.apache.org/downloads/download_io.cgi
2. สิ่งที่ควรทราบ:
ควรเพิ่ม enctype = "multipart/form-data" ลงในแบบฟอร์มแบบฟอร์ม
3. ตัวอย่างรหัส
1. รหัส JSP:
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" pageencoding = "utf-8"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en" <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <title> อัปโหลด </title> </head> <body> <form action = "UploadServlet <td> ชื่อ </td> <td> <อินพุต type = "text" name = "name"> </td> </tr> <tr> <td> age </td> <td> <อินพุต type = "text" name = "age"> </td> </tr> <td> <td> <td> </td> <td> <อินพุตประเภท = "ส่ง" value = "ส่ง"> </td> </tr> </table> </form> </body> </html>
2. รหัส UploadServlet
แพ็คเกจ Servlet; นำเข้า Java.io.BufferedInputStream; นำเข้า Java.io.BufferedOutputStream; นำเข้า Java.io.File; นำเข้า Java.io.FileOutputStream; นำเข้า java.io.ioException; นำเข้า java.io.writer; นำเข้า java.util.iterator; นำเข้า java.util.list; นำเข้า javax.servlet.servletexception; นำเข้า Javax.servlet.http.httpservlet; นำเข้า javax.servlet.http.httpservletrequest; นำเข้า Javax.servlet.http.httpservletResponse; นำเข้า org.apache.Commons.FileUpload.FileItem; นำเข้า org.apache.commons.fileupload.fileuploadexception; นำเข้า org.apache.commons.fileupload.fileuploadexception; นำเข้า org.apache.commons.fileupload.disk.diskfileitemfactory; นำเข้า org.apache.commons.fileupload.servlet.servletFileUpload; นำเข้า org.apache.commons.fileupload.util.streams; / ** * อัปโหลด servlet * @author lisanlai * */ คลาสสาธารณะอัปโหลด servlet ขยาย httpservlet {ส่วนตัวคงที่สุดท้าย serialversionuid = 1l; Public UploadServlet () {super (); } void doget ที่ได้รับการป้องกัน (คำขอ httpservletRequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {this.dopost (คำขอ, การตอบสนอง); } @suppresswarnings ("ไม่ได้ตรวจสอบ") เป็นโมฆะ dopost (httpservletrequest Request, การตอบสนอง httpservletResponse) โยน servletexception, ioexception {response.setContentType ("ข้อความ/html"); // ตั้งค่าการเข้ารหัสอักขระเป็น UTF-8 เพื่อให้การตอบสนองของอักขระภาษาจีนแสดงการเข้ารหัส ("UTF-8"); นักเขียน o = response.getWriter (); /** * ก่อนอื่นตรวจสอบว่า enctype แบบฟอร์มเป็นแบบหลายส่วน/ฟอร์ม-ข้อมูล * ในเวลาเดียวกันมันยังกำหนดว่าวิธีการส่งแบบฟอร์มเป็นวิธีการโพสต์ *: isMultipartContent (คำขอ) */ถ้า (servletfileupload.ismultipartcontent // อินสแตนซ์โรงงานไฟล์ฮาร์ดดิสก์เพื่อกำหนดค่าส่วนประกอบการอัปโหลด servletFileUpload โรงงาน DiskFileItemFactory = ใหม่ diskFileItemFactory (); // ตั้งค่าโฟลเดอร์ชั่วคราวสำหรับการจัดเก็บไฟล์โฟลเดอร์นี้จะต้องมีอยู่ไฟล์ filedir = ไฟล์ใหม่ ("../ webapps/fileupload/tmp/"); if (filedir.isdirectory () && filedir.exists () == false) {filedir.mkdir (); } Factory.setRepository (Filedir); // ตั้งค่าหน่วยความจำสูงสุดที่ครอบครองโรงงาน Setsizethreshold (1024000); // สร้าง servletFileUpload Object ServletFileUpload SFU = ใหม่ servletFileUpload (โรงงาน); sfu.setheaderencoding ("UTF-8"); // ตั้งค่าสูงสุดของไฟล์เดียวไบต์ SFU.SetFilesizEmax (102400000); // ผลรวมของไฟล์ที่อัปโหลดทั้งหมดคือไบต์สูงสุด SFU.SetSizemax (204800000); รายการ <fileItem> items = null; ลอง {items = sfu.parserequest (คำขอ); } catch (sizelimitexceedeDexception e) {system.out.println ("ขนาดไฟล์เกินค่าสูงสุด"); } catch (fileuploadexception e) {e.printstacktrace (); } // รับตัววนซ้ำของรายการตัววนซ้ำ <fileItem> iter = items == null? null: items.iterator (); // PATH DIRECTORY ที่เก็บไว้หลังจากอัพโหลดรูปภาพรูปภาพ = ไฟล์ใหม่ ("D:/อัปโหลด/รูปภาพ/"); if (images.exists () == false) {images.mkdirs (); } // รายการซ้ำในขณะที่ (iter! = null && iter.hasnext ()) {fileItem item = (fileItem) iter.next (); // ถ้าส่งผ่านเป็นฟิลด์ฟอร์มธรรมดาถ้า (item.isformfield ()) {system.out.print ("ฟิลด์ฟอร์มสามัญ:"); System.out.print (สตริงใหม่ (item.getFieldName ()) + ""); System.out.println (สตริงใหม่ (item.getString ("UTF-8"))); } // ฟิลด์ไฟล์อื่นถ้า (! item.isformfield ()) {system.out.println ("รูปภาพแหล่งที่มา:" + item.getName ()); string filename = item.getName (). substring (item.getName (). lastIndexof ("//")); bufferedInputStream ใน = ใหม่ bufferedInputStream (item.getInputStream ()); // ไฟล์ถูกเก็บไว้ในไดเรกทอรี D:/Upload/Images และไดเรกทอรีนี้จะต้องมี bufferedOutputStream out = ใหม่ bufferedOutputStream (ใหม่ fileOutputStream (ไฟล์ใหม่ (images.getAbsolutePath ()+ ชื่อไฟล์))); Streams.copy (ใน, ออกจริง); o.write ("ไฟล์อัปโหลดสำเร็จ"); }}}} else {system.out.println ("ข้อผิดพลาดประเภท enctype แบบฟอร์ม"); - 3. web.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml xmlns: web = "http://java.sun.com/xml/ns/javaee" xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5_5.xsd" XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id = "webapp_id" เวอร์ชัน = "2.5" <welcome-file> upload.jsp </welcome-file> </welcome-file-list> <servlet> <คำอธิบาย> </คำอธิบาย> <แสดง-ชื่อ> uploadservlet </display-name> <servlet-name> uploadservlet </servlet- name> <servlet-class> <servlet-name> uploadservlet </servlet-name> <url-pattern>/uploadservlet </url-pattern> </servlet-mapping> </eb-app>
บทความนี้ได้รวบรวมไว้ใน "สรุปเทคนิคการดำเนินการอัพโหลด Java" และทุกคนยินดีที่จะเรียนรู้และอ่าน
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น