บทความนี้ได้แบ่งปันตัวอย่างของไฟล์ที่บีบอัด Java และภาพดาวน์โหลดสำหรับการอ้างอิงของคุณ เนื้อหาเฉพาะมีดังนี้
หน้าหลัก index.xml
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <html> <head> <head> <title> โฮมเพจของโครงการ </title> </head> <body> <h2> homepage </h2> <h2> changsha src = "images/1.jpg"/> <!-เส้นทางสัมพัทธ์-> <br/> <!-เส้นทางสัมบูรณ์-> <a href = "/helloWeb/gzip"> การสาธิตการบีบอัดเนื้อหาหน้า-gzip </a> <br/> <br/> <a href = "down"> ภาพดาวน์โหลด </a>
ไฟล์บีบอัด: gzipservlet.java
เฉพาะเมื่อไฟล์ที่บีบอัดมีขนาดใหญ่พอค่าใช้จ่ายการบีบอัดจะถูกชดเชยและการบีบอัดจะถูกบีบอัดได้อย่างมีประสิทธิภาพ มิฉะนั้นขนาดไฟล์หลังจากการบีบอัดไฟล์ขนาดเล็กมากจะมีขนาดใหญ่ขึ้น
แพ็คเกจ cn.hncu.servlet; นำเข้า java.io.byTearrayOutputStream; นำเข้า java.io.ioException; นำเข้า java.io.OutputStream; นำเข้า java.util.zip.gzipOutputStream; นำเข้า Javax.servlet.servlet.servletexception; javax.servlet.http.httpservletrequest; นำเข้า Javax.servlet.http.httpservletResponse; คลาสสาธารณะ GZIPSERVLET ขยาย HTTPSERVLET {@OverRide บริการที่ได้รับการป้องกัน str = "Vuttyjhgyurchunan Changsha Surdivsfanhui Wuhu 890-80897 บางทีอีกต่อไป v จะคุ้นเคยกับ tvsduvgkjxhvnxzc.nlkcjsdfpeifniuq4ey8f048eyuyli" +"skchkxhckxzncnxclkjhasliduhasduisuugdlisgdlkjadhlksjhdlkasjdhasklhdlkjsahashdkskdjhkdjshkldsjhfkljd"; ไม่มี ISO-8859-1 ไบต์ src [] = str.getBytes ("UTF-8"); // ข้อมูลที่ส่งไปยังเบราว์เซอร์ในพื้นหลังไม่ได้รับการยอมรับจากเบราว์เซอร์-จำเป็นต้องดาวน์โหลดและมันถูกอ่านไม่ออกเพื่อเปิดด้วยข้อความ ดังนั้นคุณต้องตั้งค่าโปรโตคอล ByteArrayOutputStream Bout = New ByteArrayOutputStream (); // สตรีมหน่วยความจำ GZIPOUTPUTSTREAM GOUT = ใหม่ GZIPOUTPUTSTREAM (BOUT); Gout.write (src); // กด src เพื่อ bout gout.close (); // flash cache byte dest [] = bout.tobytearray (); // src ==> dest // สรุป: เมื่อเอาท์พุทข้อมูลบีบอัดคุณต้องตั้งค่าส่วนหัวการตอบสนอง // หลังจากตั้งค่าส่วนหัวการตอบกลับคุณไม่จำเป็นต้องดาวน์โหลดและอย่าอ่านไม่ออก resp.setContentType ("ข้อความ/html; charset = utf-8"); // อย่าลืมตั้งค่า str.getByte เพื่อเข้ารหัส // เมื่อไฟล์มีขนาดเล็กมาก: การบีบอัดไม่มีผลกระทบ System.out.println ("ความยาวก่อนการบีบอัด:"+src.length); System.out.println ("ความยาวหลังการบีบอัด:"+dest.length); // ปัดข้อมูลที่บีบอัดออกไปเพื่อปลายทาง outputstream out = resp.getOutputStream (); // resp.getWriter (); // out.write (src); out.write (dest); -ดาวน์โหลดภาพ: downservlet .java (ภาพอยู่ภายใต้ไดเรกทอรี SRC)
แพ็คเกจ cn.hncu.servlet; นำเข้า java.io.ioexception; นำเข้า java.io.inputstream; นำเข้า java.io.OutputStream; นำเข้า java.net.urlencoder; นำเข้า javax.servlet.servlet.servletexception; javax.servlet.http.httpservletrequest; นำเข้า Javax.servlet.http.httpservletrequest; นำเข้า Javax.servlet.http.httpservletResponse; resp) พ่น servletexception, ioexception {// protocol set 1 resp.setContentType ("แอปพลิเคชัน/แรง-ลง"); // ใช้แอปพลิเคชันที่ดาวน์โหลดไฟล์ตามค่าเริ่มต้นเพื่อดาวน์โหลด String filename = "4.jpg"; // ถ้าชื่อไฟล์เป็นภาษาจีน-เช่น: รูปภาพของฉัน jpg //filename=urlencoder.encode(filename,"utf-8") ชื่อไฟล์ filename หากไม่ได้เข้ารหัสชื่อไฟล์ที่แสดงในเบราว์เซอร์จะถูกอ่านไม่ออก InputStream ใน = downservlet.class.getClassLoader (). getResourceasstream (ชื่อไฟล์); // การตั้งค่าโปรโตคอล 2 resp.setheader ("Content-Disposition", "attachment; filename =/'"+filename+"/'"); // บอกเบราว์เซอร์ชื่อไฟล์ที่ดาวน์โหลดปัจจุบัน //downservlet.class: "d: /apache-tomcat-7.0.30 ตำแหน่งของรูปภาพ: "D: /apache-tomcat-7.0.30/webapps/helloweb/web-inf/classes" // fileinputstream fin = new fileInputStream (ชื่อไฟล์); byte buf [] = ไบต์ใหม่ [512]; int len = 0; // ในขณะที่ ((len = fin.read (buf))! =-1) {// out.write (buf, 0, len); //} ในขณะที่ ((len = in.read (buf))! =-1) {out.write (buf, 0, len); - ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น