java压缩文件和下载图片示例
时间:2022-02-03 10:32:52|栏目: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);
}
}
}
上一篇:如何使用spring ResponseEntity处理http响应
栏 目:JAVA代码
下一篇:mybatis 逆向生成后遵循java驼峰法则的解决
本文标题:java压缩文件和下载图片示例
本文地址:http://www.codeinn.net/misctech/192248.html


阅读排行
- 1Java Swing组件BoxLayout布局用法示例
- 2java中-jar 与nohup的对比
- 3Java邮件发送程序(可以同时发给多个地址、可以带附件)
- 4Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常
- 5Java中自定义异常详解及实例代码
- 6深入理解Java中的克隆
- 7java读取excel文件的两种方法
- 8解析SpringSecurity+JWT认证流程实现
- 9spring boot里增加表单验证hibernate-validator并在freemarker模板里显示错误信息(推荐)
- 10深入解析java虚拟机




