java緊縮文件和下載圖片示例。本站提示廣大學習愛好者:(java緊縮文件和下載圖片示例)文章只能為提供參考,不一定能成為您想要的結果。以下是java緊縮文件和下載圖片示例正文
本文實例為年夜家分享了java緊縮文件和下載圖片示例,供年夜家參考,詳細內容以下
主頁面index.xml
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <html> <head> <title>項目標主頁</title> </head> <body> <h2>主頁主頁</h2> <h2>湖南長沙</h2> <h3>宣布方法一......</h3> <img src="images/1.jpg"/><!-- 絕對途徑 --> <br/> <!-- 相對途徑 --> <a href="/helloWeb/gzip">頁面內容緊縮演示--gzip</a><br/><br/> <a href="down">下載圖片</a><br/><br/> </body> </html>
緊縮文件:GzipServlet.java
只要被緊縮文件足夠年夜,能力抵消緊縮開支,有用緊縮。不然,很小的文件緊縮以後的文件年夜小反而變年夜
package cn.hncu.servlet; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.zip.GZIPOutputStream; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class GzipServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String str="vuttyjhgyurc湖南長沙surdivsf安徽蕪湖890-80897或許更長v就會習氣如許tvsduvgkjxhvnxzc.nlkcjsdfpeifniuq4ey8f048eyuyli" +"skchkxhckxzncnxclkjhasliduhasiduisugdlisgdlkjadhlksjhdlkasjdhasklhdlkjsahashdkskdjhkdjshkldsjhlksjhfkljd"; // byte src[]=str.getBytes();//應用平台默許編碼(GBK),沒有就應用ISO-8859-1 byte src[]=str.getBytes("utf-8"); //後台向閱讀器發的數據,閱讀器不熟悉--須要下載,用文本翻開是亂碼。所以要設置協定 ByteArrayOutputStream bOut=new ByteArrayOutputStream();//內存流 GZIPOutputStream gOut=new GZIPOutputStream(bOut); gOut.write(src);//把src壓到bOut gOut.close();//刷緩存 byte dest[]=bOut.toByteArray();//src==>dest //總結:輸入緊縮數據時要設置呼應頭 resp.setHeader("Content-Encoding", "gzip"); //設置呼應頭以後,就不消下載,穩定碼 resp.setContentType("text/html;charset=utf-8");//必定要把str.getByte設置編碼 //當文件很小時:緊縮有效果,反而包袱(不克不及抵消緊縮所須要的開支)...較年夜文件會被壓小(普通>200k) System.out.println("緊縮前的長度:"+src.length); System.out.println("緊縮後的長度:"+dest.length); //把緊縮以後的數據dest刷出去 OutputStream out=resp.getOutputStream();//resp.getWriter(); // out.write(src); out.write(dest); } }
下載圖片:DownServlet .java(圖片在src目次上面)
package cn.hncu.servlet; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class DownServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //協定設置1 resp.setContentType("application/force-download");//用默許下載文件的運用法式下載 String fileName="4.jpg"; //假如文件名是中文--如:我的圖片.jpg //fileName=URLEncoder.encode(fileName,"utf-8");//把fileName編碼一下,假如不編碼,閱讀器中顯示的文件名會亂碼 InputStream in=DownServlet.class.getClassLoader().getResourceAsStream(fileName); //協定設置2 resp.setHeader("content-Disposition", "attachment;filename=\'"+fileName+"\'");//告知閱讀器以後下載的文件名 //DownServlet.class的地位:"D:\apache-tomcat-7.0.30\webapps\helloWeb\WEB-INF\classes\cn\hncu\servlet" //圖片地點確當前地位:"D:\apache-tomcat-7.0.30\webapps\helloWeb\WEB-INF\classes" //FileInputStream fin=new FileInputStream(fileName);//弗成行 OutputStream out=resp.getOutputStream(); byte buf[]=new byte[512]; int len=0; // while((len=fin.read(buf))!=-1){ // out.write(buf, 0, len); // } while((len=in.read(buf))!=-1){ out.write(buf, 0, len); } } }
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。