首页 > 编程 > Java > 正文

java压缩文件和下载图片示例

2019-11-26 13:43:57
字体:
来源:转载
供稿:网友

本文实例为大家分享了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);    }  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表