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);
}
}
}
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。