บทความนี้ใช้ตัวอย่างเพื่อแนะนำวิธีการใช้ Commons-fileupload.jar Apache ของ Commons-fileupload.jar เพื่ออำนวยความสะดวกในการอัพโหลดฟังก์ชันของไฟล์ เนื้อหาเฉพาะมีดังนี้
วางคอมมอนส์-fileupload.jar ภายใต้ web-inf/lib ในแอปพลิเคชันและพร้อมใช้งาน ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชั่นการอัปโหลดไฟล์
เวอร์ชัน fileupload ที่ใช้คือ 1.2 และสภาพแวดล้อมคือ Eclipse3.3+myeclipse6.0 FileUpload ขึ้นอยู่กับ Commons IO ดังนั้นก่อนเข้าสู่โครงการกำหนดแพ็คเกจ JAR ของ Commons IO (ใช้ Commons-IO-1.3.2.jar ในบทความนี้) ภายใต้ Web-Inf/Lib
บทความนี้เป็นโครงการตัวอย่างที่สามารถดาวน์โหลดได้ในไฟล์แนบในตอนท้ายของบทความ
ตัวอย่างที่ 1
ตัวอย่างที่ง่ายที่สุดคือการแยกวิเคราะห์คำขอผ่านคลาสคงที่ servletFilePilePilePload คลาสโรงงาน FileItemFactory จะประมวลผลฟิลด์ทั้งหมดในรูปแบบของคลาส Mulipart ไม่ใช่แค่ฟิลด์ไฟล์ getName () รับชื่อไฟล์ getString () รับเนื้อหาข้อมูลแบบฟอร์มและ iSformfield () สามารถกำหนดได้ว่าเป็นรายการแบบฟอร์มทั่วไปหรือไม่
demo1.html
<html> <head> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> ไฟล์ upload </title> </head> <body> // ต้องเป็นข้อมูลแบบหลายรูปแบบ <form name = "myform" action = "demo1.jsp" method = "post" enctype = "multipart/form-data"> ชื่อของคุณ: <br> <input type = "text" name = "name" size = "15"> <br> ไฟล์: <br> </form> </body> </html>
demo1.jsp
<%@ page language = "java" contentType = "ข้อความ/html; charset = gb18030" pageencoding = "gb18030"%> <%@ page import = "org.apache.commons.fileupload*"%> <%@ หน้านำเข้า นำเข้า = "org.apache.commons.fileupload.disk.*"%> <%@ page import = "java.util.*"%> <! doctype html สาธารณะ "-// w3c // dtd html 4.01 transitional // en"> คำขอเป็นข้อมูลแบบฟอร์มหลายส่วน if (isMultipart == true) {fileitemfactory Factory = ใหม่ diskfileitemfactory (); // สร้างวัตถุ diskfileitemfactory สำหรับคำขอและแยกวิเคราะห์คำขอผ่าน หลังจากดำเนินการแยกวิเคราะห์รายการแบบฟอร์มทั้งหมดจะถูกบันทึกไว้ในรายการ ServletFileUpload Upload = ใหม่ servletFilePilePload (โรงงาน); รายการ <fileItem> items = upload.parserequest (คำขอ); Iterator <fileItem> itr = items.iterator (); ในขณะที่ (itr.hasnext ()) {fileItem item = (fileItem) itr.next (); // ตรวจสอบว่าโครงการปัจจุบันเป็นโครงการฟอร์มปกติหรือไฟล์อัปโหลด if (item.isformfield ()) {// ถ้าเป็นรายการรูปแบบปกติแสดงเนื้อหาฟอร์ม String fieldName = item.getFieldName (); if (fieldName.equals ("ชื่อ")) // การตอบสนองเป็น type = "text" name = "name" out.print ("ชื่อฟิลด์คือ" + item.getString ()); // แสดงเนื้อหาแบบฟอร์ม out.print ("<br>"); } else {// หากกำลังอัปโหลดไฟล์แสดงชื่อไฟล์ out.print ("ชื่อไฟล์อัปโหลดคือ" + item.getName ()); out.print ("<br>"); }}} else {out.print ("Enctype ต้องเป็น multipart/form-data"); }%> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> ไฟล์อัปโหลด </title> </head> <body> </body> </html> ผลลัพธ์:
ชื่อฟิลด์ isjeff
ชื่อไฟล์อัปโหลด ISD:/C ตัวอย่างการทดสอบภาษา/คำถามการบ้าน rar
ตัวอย่างที่ 2
อัปโหลดสองไฟล์ไปยังไดเรกทอรีที่ระบุ
demo2.html
<html> <head> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> ไฟล์ upload </title> </head> <body> <form name = "myform" การกระทำ = "demo2.jsp" post "post" post " name = "myfile"> <br> file2: <br> <อินพุต type = "file" name = "myfile"> <br> <br> <อินพุต type = "submit" name = "subment" value = "commit"> </form> </body> </html>
demo2.jsp
<%@ page language = "java" contentType = "ข้อความ/html; charset = gb18030" pageencoding = "gb18030"%> <%@ page import = "org.apache.commons.fileupload*"%> <%@ หน้านำเข้า นำเข้า = "org.apache.commons.fileupload.disk.*"%> <%@ page import = "java.util.*"%> <%@ page import = "java.io.*"%> <! บูลีน ismultipart = servletfileupload.ismultipartcontent (คำขอ); if (isMultipart == true) {ลอง {fileItemFactory Factory = ใหม่ diskFileItemFactory (); ServletFileUpload Upload = ใหม่ servletFilePilePload (โรงงาน); รายการ <fileItem> items = upload.parserequest (คำขอ); // รับไฟล์ทั้งหมด iterator <fileItem> itr = items.iterator (); ในขณะที่ (itr.hasnext ()) {// ฝึกอบรมแต่ละไฟล์ = (fileItem) itr.next (); String filename = item.getName (); // รับชื่อไฟล์รวมถึงเส้นทางถ้า (filename! = null) {ไฟล์ fullfile = ไฟล์ใหม่ (item.getName ()); ไฟล์ savedfile = ไฟล์ใหม่ (uploadpath, fullfile.getName ()); item.write (SavedFile); }} out.print ("อัปโหลดประสบความสำเร็จ"); } catch (exception e) {e.printstacktrace (); }} else {out.println ("Enctype ต้องเป็น multipart/form-data"); }%> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> ไฟล์อัปโหลด </title> </head> <body> </body> </html> ผลลัพธ์:
อัปโหลดสำเร็จ
ในเวลานี้คุณสามารถเห็นไฟล์สองไฟล์ที่คุณอัปโหลดภายใต้ "D:/Temp"
ตัวอย่างที่ 3
อัปโหลดไฟล์ไปยังไดเรกทอรีที่ระบุและ จำกัด ขนาดไฟล์
demo3.html
<html> <head> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> ไฟล์อัปโหลด </title> </head> <body> <form name = "myform" การกระทำ = "demo3.jsp" post "post" name = "myfile"> <br> <br> <อินพุต type = "ส่ง" name = "ส่ง" value = "commit"> </form> </body> </html>
DEMO3.JSP
<%@ page language = "java" contentType = "ข้อความ/html; charset = gb18030" pageencoding = "gb18030"%> <%@ page import = "org.apache.commons.fileupload*"%> <%@ หน้านำเข้า นำเข้า = "org.apache.commons.fileupload.disk.*"%> <%@ page import = "java.util.*"%> <%@ page import = "java.io.*"%> <! ไฟล์ ("d: // temp"); // อัปโหลดไดเรกทอรีไฟล์ถ้า (! uploadPath.exists ()) {uploadPath.mkdirs (); } // ไฟล์ไดเรกทอรีไฟล์ชั่วคราว temppathfile = ไฟล์ใหม่ ("d: // temp // buffer //"); if (! temppathfile.exists ()) {temppathfile.mkdirs (); } ลอง {// สร้างโรงงานสำหรับรายการไฟล์ที่ใช้ดิสก์ DiskFileItemFactory Factory = ใหม่ DiskFileItemFactory (); // กำหนดข้อ จำกัด จากโรงงานโรงงาน Setsizethreshold (4096); // กำหนดขนาดบัฟเฟอร์นี่คือ 4KB Factory.SetRepository (TemppathFile); // ตั้งค่าไดเร็กทอรีบัฟเฟอร์ // สร้างไฟล์อัปโหลดตัวจัดการใหม่ ServletFileUpload อัปโหลด = ใหม่ servletFilePilePload (โรงงาน); // ตั้งค่าขนาดคำขอโดยรวมของคำขออัพโหลด SetsizeMax (4194304); // ตั้งค่าขนาดไฟล์สูงสุดนี่คือ 4MB LIST <fileItem> items = upload.parserequest (คำขอ); // รับไฟล์ทั้งหมด iterator <fileitem> i = items.iterator (); ในขณะที่ (i.hasnext ()) {fileItem fi = (fileItem) i.next (); String filename = fi.getName (); if (filename! = null) {ไฟล์ fullfile = ไฟล์ใหม่ (fi.getName ()); ไฟล์ savedfile = ไฟล์ใหม่ (uploadpath, fullfile .getName ()); fi.write (savedfile); }} out.print ("อัปโหลดประสบความสำเร็จ"); } catch (exception e) {e.printstacktrace (); }%> <html> <head> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> ไฟล์อัปโหลด </title> </head> <body> </body> </html> ตัวอย่างที่ 4
ใช้ servlet เพื่อใช้การอัปโหลดไฟล์
upload.java
แพ็คเกจ com.zj.sample; นำเข้า java.io.file; นำเข้า java.io.ioexception; นำเข้า java.util.iterator; นำเข้า java.util.list; นำเข้า javax.servlet.servletexception; นำเข้า javax.servlet.http.httpservlet; javax.servlet.http.httpservletResponse; นำเข้า org.apache.commons.fileupload.fileitem; นำเข้า org.apache.commons.fileupload.disk.diskfileitemfactory; @suppresswarnings ("อนุกรม") การอัปโหลดคลาสสาธารณะขยาย httpservlet {สตริงส่วนตัว uploadPath = "d: // temp"; // ไดเรกทอรีสำหรับการอัปโหลดไฟล์สตริงส่วนตัว temppath = "d: // temp // buffer //"; // ไฟล์ไดเรกทอรีไฟล์ชั่วคราว temppathfile; @suppresswarnings ("ไม่ได้ตรวจสอบ") โมฆะสาธารณะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น IOException, servletexception {ลอง {// สร้างโรงงานสำหรับรายการไฟล์ดิสก์ที่ใช้ดิสก์ // กำหนดข้อ จำกัด จากโรงงานโรงงาน Setsizethreshold (4096); // กำหนดขนาดบัฟเฟอร์นี่คือ 4KB Factory.SetRepository (TemppathFile); // ตั้งค่าไดเร็กทอรีบัฟเฟอร์ // สร้างไฟล์อัปโหลดตัวจัดการใหม่ ServletFileUpload อัปโหลด = ใหม่ servletFilePilePload (โรงงาน); // ตั้งค่าขนาดคำขอโดยรวมของคำขออัพโหลด SetsizeMax (4194304); // ตั้งค่าขนาดไฟล์สูงสุดนี่คือ 4MB LIST <fileItem> items = upload.parserequest (คำขอ); // รับไฟล์ทั้งหมด iterator <fileitem> i = items.iterator (); ในขณะที่ (i.hasnext ()) {fileItem fi = (fileItem) i.next (); String filename = fi.getName (); if (filename! = null) {ไฟล์ fullfile = ไฟล์ใหม่ (fi.getName ()); ไฟล์ savedfile = ไฟล์ใหม่ (uploadpath, fullfile.getName ()); fi.write (savedfile); }} system.out.print ("อัปโหลดสำเร็จ"); } catch (Exception e) {// หน้าข้อผิดพลาดสามารถกระโดดได้ E.PrintStackTrace (); }} โมฆะสาธารณะ init () พ่น servletexception {ไฟล์ uploadfile = ไฟล์ใหม่ (uploadpath); if (! uploadfile.exists ()) {uploadfile.mkdirs (); } ไฟล์ temppathFile = ไฟล์ใหม่ (temppath); if (! temppathfile.exists ()) {temppathfile.mkdirs (); - demo4.html
<html> <head> <meta http-equiv = "content-type" content = "text/html; charset = gb18030"> <title> ไฟล์ upload </title> </head> <body> // action = "fileupload" สอดคล้องกับการตั้งค่า <form name = "myform" action = "fileupload" method = "post" enctype = "multipart/form-data"> ไฟล์: <br> <อินพุต type = "file" name = "myfile"> <br> <br>
web.xml
<servlet> <servlet-name> อัปโหลด </servlet-name> <servlet-lass> com.zj.sample.upload </servlet-class> </servlet> <servlet-mapping> <servlet-name> อัปโหลด </servlet-name>
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น