แก้ไขหน้าอัปโหลด html ของไฟล์อัปโหลด
หมายเหตุ: ไม่สามารถใช้งานได้เมื่ออัปโหลดโพสต์ (รับไฟล์ไม่สามารถอัปโหลดได้)
ควรตั้งค่าคุณสมบัติ Enctype แบบฟอร์มเป็น multipart/form-data (ระบุว่าข้อมูลที่ส่งเป็นไฟล์ไบนารี)
upload.html
<! doctype html> <html> <head> <meta charset = "utf-8"> <title> ไฟล์อัปโหลด </title> </head> <body> <form action = "uploadphotoservlet" method = "post" enctype = "multipart/form-data" type = "file" name = "filepath"/> <br> <อินพุต type = "submit" value = "upload"> </form> </body> </html>
ไฟล์ UploadpTotoservlet อัปโหลดคลาส-การพัฒนาฟังก์ชั่นการอัปโหลด
ใส่แพ็คเกจสองขวด Commons-io-1.4.jar และ Commons-Fileupload -1.2.2.jar ในไดเรกทอรี Web-Inf/LIB
นำเข้า java.io.file; นำเข้า java.io.fileoutputStream; นำเข้า java.io.ioException; นำเข้า java.io.Inputstream; นำเข้า java.io.printwriter; นำเข้า java.util.iterator; นำเข้า Java.Util.List; javax.servlet.http.httpservlet; นำเข้า javax.servlet.http.httpservletrequest นำเข้า javax.servlet.http.httpservletResponse; นำเข้า org.apache.commons.fileupload.fileitem; org.apache.commons.fileupload.disk.diskfileitemfactory; นำเข้า org.apache.commons.fileupload.servlet.servletFileUpload;/** * การใช้งาน Servlet Eploadphotoservlet */@webservlet serialVersionUid = 1L; / ** * @See httpservlet#httpservlet () */ public uploadphotoservlet () {super (); // toDo toDo ที่สร้างขึ้นอัตโนมัติ stub}/** * @see httpservlet#doget (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) */void doget ที่ได้รับการป้องกัน Response.getWriter (). ภาคผนวก ("เสิร์ฟที่:") .Append (request.getContextPath ()); ชื่อไฟล์สตริง = null; โรงงาน DiskFileItemFactory = ใหม่ diskfileitemfactory (); // รายการไฟล์ดิสก์รายการโรงงาน ServletFilePilePload อัปโหลด = ใหม่ servletFileUpload (โรงงาน); // รับผิดชอบในการประมวลผลข้อมูลไฟล์ที่อัปโหลดและห่อหุ้มแต่ละรายการอินพุตในแบบฟอร์มลงในวัตถุ FileItem // ตั้งค่าขนาดไฟล์ที่อัปโหลดเป็น 10m Factory.SetSizEthreshold (2*1024*1024); รายการรายการ = null; ลอง {// parse parses items = upload.parserequest (คำขอ); // รับวัตถุรายการที่บันทึกเนื้อหาที่อัปโหลดทั้งหมด} catch (fileuploadexception e) {// toDo บล็อก catch block ที่สร้างขึ้นอัตโนมัติ e.printStackTrace (); } iterator iter = items.iterator (); // วนซ้ำผ่านข้อมูลไฟล์ที่อัปโหลดในขณะที่ (iter.hasnext ()) {fileItem item = (fileItem) iter.next (); if (! item.isformfield ()) {// ถ้าไม่ได้อัปโหลด // สร้างไฟล์ avatar ตามชื่อไฟล์ timestamp = system.currentTimeMillis ()+". jpg"; // รับโฟลเดอร์อัปโหลดผ่าน GetRealPath หากโครงการมีอยู่จะไม่มีอยู่ภายใต้โครงการปัจจุบันให้สร้างโฟลเดอร์โครงการ // สตริงโฟลเดอร์รูปภาพ PhotoFolder = request.getServletContext (). getRealPath ("อัปโหลด"); ไฟล์ f = ไฟล์ใหม่ (Photofolder, ชื่อไฟล์); f.getParentFile (). mkdirs (); // หากไม่มีโฟลเดอร์พาเรนต์จะถูกสร้างขึ้นโดยอัตโนมัติ // รับไฟล์ที่อัปโหลดโดยเบราว์เซอร์ผ่าน item.getInputStream () inputStream คือ = item.getInputStream (); // อ่านไฟล์ใน // คัดลอกไฟล์ fileOutputStream fos = ใหม่ fileOutputStream (f); // แสดงไบต์ [] b = ไบต์ใหม่ [2*1024*1024] บนอินเทอร์เฟซ; int len = 0; ในขณะที่ ((len = is.read (b))! =-1) {fos.write (b, 0, len); } fos.close (); } else {system.out.println (item.getFieldName ()); // ค่าสตริง Heroname = item.getString (); value = new String (value.getBytes ("ISO-8859-1"), "UTF-8"); System.out.println (ค่า); // Mulberry}} สตริง html = "<img width = '200' ความสูง = '150' src = 'อัปโหลด/%s'/>"; Response.SetContentType ("ข้อความ/html"); PrintWriter PW = Response.getWriter (); PW.Format (HTML, ชื่อไฟล์); } / ** * @see httpservlet#dopost (คำขอ httpservletrequest, การตอบสนอง httpservletresponse) * / การป้องกันโมฆะ dopost (httpservletrequest คำขอ, httpservletresponse การตอบสนอง) -ผลการทำงาน:
สรุป
ข้างต้นคือรหัสการใช้งานสำหรับการอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์และแสดงฟังก์ชั่นตามลำดับ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!