บทความนี้แชร์รหัสเฉพาะสำหรับ Java เพื่อใช้ฟังก์ชั่นการอัปโหลดและดาวน์โหลดไฟล์สำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
ส่วนหน้าใช้คุณสมบัติ Enctype ของแบบฟอร์มเพื่อแก้ไขวิธีการส่งข้อมูลไปยังแบบฟอร์ม "สตรีม" ไบนารี เซิร์ฟเวอร์ (servlet) ได้รับข้อมูลการไหลผ่าน getInputStream () และใช้การดำเนินการพื้นฐานของสตรีม Java I/O เพื่อเขียนโฟลว์ไปยังอุณหภูมิไฟล์ที่สร้างขึ้นชั่วคราวโดยเซิร์ฟเวอร์ จากนั้นใช้การดำเนินการไฟล์พื้นฐานอีกครั้งเพื่ออ่านและสกัดกั้นเนื้อหาของไฟล์ชั่วคราวสร้างไฟล์ที่เกี่ยวข้องตามข้อมูลในนั้นและเขียนข้อมูลเฉพาะที่อ่านออก เมื่อดาวน์โหลดให้ค้นหาไฟล์ที่เกี่ยวข้องบนเซิร์ฟเวอร์ตามชื่อไฟล์ที่ส่งแล้วส่งออกไปยังหน้าตามสตรีมเอาท์พุท Outstream และตั้งค่าประเภทการตอบกลับและส่วนหัวการตอบกลับของ servlet
กระบวนการส่งเฉพาะมีดังนี้:
ส่วนหนึ่งของข้อมูลการไหลคือ:
รหัสเฉพาะมีดังนี้:
รหัสส่วนหน้า:
<html> <head> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"> <title> แทรกชื่อที่นี่ </title> <script src = "js/jQuery.js"> </script> <bable> <tr> <td> โปรดเลือกอัปโหลดไฟล์: </td> <td> <อินพุต id = "myfile" name = "myfile" type = "file" value = ""/> </td> <td> <อินพุตประเภท = "ส่ง" value = "upload"> </td> <a href = "fileloadownservlet? filename = $ {filename}"> $ {filename} </a> </body> </html>อัปโหลดส่วน Servlet (Core)
@webservlet ("/fileupservlet") คลาสสาธารณะ FileupServlet ขยาย httpservlet {ส่วนตัวคงที่สุดท้าย Long SerialVersionUID = 1L; / ** * @See httpservlet#httpservlet () */ public fileupservlet () {super (); // todo todo ที่สร้างขึ้นอัตโนมัติ stub}/ ** * @see httpservlet#doget (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) */ void doget ที่ได้รับการป้องกัน การตอบสนอง); } / ** * @see httpservlet#dopost (คำขอ httpservletrequest, การตอบสนอง httpservletresponse) * / การป้องกันโมฆะ dopost (httpservletrequest คำขอ, httpservletresponse การตอบสนอง) inputStream filesource = request.getInputStream (); // คำขอได้รับการสตรีมข้อมูลสตริง tempname = "d:/temp"; // tempfile แสดงถึงการจัดเก็บข้อมูลชั่วคราวของไฟล์ไฟล์ tempfile = ไฟล์ใหม่ (tempname); b [] = ไบต์ใหม่ [1024]; int n; ในขณะที่ ((n = filesource.read (b))! = -1) // อ่าน 1024 ไบต์จากสตรีมเอาต์พุตในแต่ละครั้งจนกว่าคุณจะอ่านเสร็จ {outputstream.write (b, 0, n); } outputStream.close (); filesource.close (); // ปิดสตรีมอินพุตและเอาต์พุต/*ต่อไปนี้คือการดำเนินการไฟล์เฉพาะส่วนใหญ่สำหรับการแยกวิเคราะห์ไฟล์อุณหภูมิที่สร้างขึ้นชั่วคราวและความรู้ส่วนใหญ่คือเนื้อหาของอินพุต Java และกระแสเอาต์พุต! */randomAccessFile randomFile = new randomActEncessFile (tempfile, "r"); // สตรีมแบบสุ่ม, ระบุเพื่ออ่านไฟล์ชั่วคราวอ่านเฉพาะ randomfile.readline (); // อ่านบรรทัดแรก, ข้อมูลที่ไม่ถูกต้อง, ไม่มีสตริง str = randomfile.readline () = str.lastIndexof ("/" "); // ระบุตำแหน่งของไฟล์สตริงข้อมูลที่ต้องการ = str.substring (enginindex, endindex); // สกัดกั้นชื่อไฟล์ // reposition ตัวชี้ไฟล์และรับเนื้อหาไฟล์สุ่ม ! > = 0 && j <= 2) {endtext--; randomfile.seek (endtext); System.out.println (realpath); fileupload = ไฟล์ใหม่ (realpath); ถ้า (! fileupload.exists ()) {fileupload.mkdir (); RandomFile.Seek (startext); SimpledateFormat Timed = New SimpledateFormat ("YYYY-MM-DD HH: MM: SS"); request.getRequestDispatcher ("/fildeop.jsp"). ไปข้างหน้า (คำขอ, ตอบกลับ);ส่วนดาวน์โหลด
ได้รับการป้องกันโมฆะ dopost (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {// toDo วิธีการที่สร้างขึ้นอัตโนมัติสตริงสตริง filename = request.getParameter ("filename"); String Path = getServletContext (). getRealPath ("/")+"รูปภาพ/"; ไฟล์ไฟล์ = ไฟล์ใหม่ (พา ธ+ชื่อไฟล์); // ไฟล์ถ้า (file.exists ()) {response.setContentType ("แอปพลิเคชัน/x-msdownload"); // ตั้งค่าประเภทการตอบกลับนี่คือการตอบสนองประเภทการดาวน์โหลด setheader ("เนื้อหา-การจัดสรร", "เอกสารแนบ; filename =/" "+filename+"/""); // เปิด inputStream inputStream = ใหม่ fileInputStream (ไฟล์); servletOutputStream outputStream = response.getOutputStream (); ไบต์ b [] = ไบต์ใหม่ [1024]; int n; ในขณะที่ ((n = inputstream.read (b))! = -1) {outputStream.write (b, 0, n); } outputStream.close (); inputstream.close (); } else {request.setAttribute ("ผลลัพธ์", ไฟล์ไม่มีอยู่! ดาวน์โหลดล้มเหลว! "); request.getRequestDispatcher ("/fildeop.jsp"). forward (คำขอ, การตอบกลับ); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น