java压缩文件和下载图片示例
2016-10-11 11:12
851 查看
本文实例为大家分享了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); } } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- java实现文件上传下载和图片压缩代码示例
- java--压缩文件和下载图片
- Java 小程序 实现网络下载图片到制定文件夹,压缩和删除文件
- java先下载excel文件,然后与其它文件、图片压缩
- java下载远程http地址的图片文件到本地-自动处理图片是否经过服务器gzip压缩的问题
- Java 批量文件压缩导出并下载到本地示例代码
- java下载远程http地址的图片文件到本地-自动处理图片是否经过服务器gzip压缩的问题
- 基于spring-boot的文件上传和下载(包括图片的压缩)--第一篇(Java代码)
- 图片文件压缩java代码
- 用TreeView控件实现资源管理器(显示本地硬盘下所有文件夹和文件,并可以浏览图片)(示例代码下载)
- Java FTP上传下载单个文件示例代码
- asp 点击直接下载文件和图片-示例
- java实现文件下载功能-----直接上图片
- java下载网络文件, ppt,pdf,图片
- 提供下载:批量图片压缩(生成缩略图或指定大小图片)及文件批量改名器
- java 批量下载图片,批量打包文件并下载
- JAVA将任意图片文件压缩成想要的图片类型与大小
- !精品!附上自己不外传的JAVA笔记一份,不能提供下载,只能复制,理论逻辑图片有几张失效(原是Word文件),甚是遗憾啊!!
- Control Study->AdRotator广告控件显示自定义配置文件中广告以及与DataGrid控件结合使用显示图片(示例代码下载)
- Java 压缩文件示例