java 下载示例

 1 package com.charmyin.cmstudio.common.utils;
 2
 3 import java.io.BufferedInputStream;
 4 import java.io.BufferedOutputStream;
 5 import java.io.File;
 6 import java.io.FileInputStream;
 7 import java.io.IOException;
 8 import java.io.InputStream;
 9 import java.io.OutputStream;
10
11 import javax.servlet.http.HttpServletResponse;
12
13 public class DownLoadExcelUtil {
14
15
16     public static void downLoadFile(String filePath, HttpServletResponse response, String fileName, String fileType)
17             throws Exception {
18             File file = new File(filePath);  //根据文件路径获得File文件
19             //设置文件类型(这样设置就不止是下Excel文件了,一举多得)
20             if("pdf".equals(fileType)){
21                response.setContentType("application/pdf;charset=GBK");
22             }else if("xls".equals(fileType)){
23                response.setContentType("application/msexcel;charset=GBK");
24             }else if("doc".equals(fileType)){
25                response.setContentType("application/msword;charset=GBK");
26             }
27             //文件名
28             response.setHeader("Content-Disposition", "attachment;filename=\""
29                 + new String(fileName.getBytes(), "ISO8859-1") + "\"");
30             response.setContentLength((int) file.length());
31             byte[] buffer = new byte[4096];// 缓冲区
32             BufferedOutputStream output = null;
33             BufferedInputStream input = null;
34             try {
35               output = new BufferedOutputStream(response.getOutputStream());
36               input = new BufferedInputStream(new FileInputStream(file));
37               int n = -1;
38               //遍历,开始下载
39               while ((n = input.read(buffer, 0, 4096)) > -1) {
40                  output.write(buffer, 0, n);
41               }
42               output.flush();   //不可少
43               response.flushBuffer();//不可少
44             } catch (Exception e) {
45               //异常自己捕捉
46             } finally {
47                //关闭流,不可少
48                if (input != null)
49                     input.close();
50                if (output != null)
51                     output.close();
52             }
53         }
54
55      public static HttpServletResponse download(String path, HttpServletResponse response) {
56             try {
57                 // path是指欲下载的文件的路径。
58                 File file = new File(path);
59                 // 取得文件名。
60                 String filename = file.getName();
61                 // 取得文件的后缀名。
62                 String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();
63
64                 // 以流的形式下载文件。
65                 InputStream fis = new BufferedInputStream(new FileInputStream(path));
66                 byte[] buffer = new byte[fis.available()];
67                 fis.read(buffer);
68                 fis.close();
69                 // 清空response
70                 response.reset();
71                 // 设置response的Header
72                 response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
73                 response.addHeader("Content-Length", "" + file.length());
74                 OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
75                 response.setContentType("application/octet-stream");
76                 toClient.write(buffer);
77                 toClient.flush();
78                 toClient.close();
79             } catch (IOException ex) {
80                 ex.printStackTrace();
81             }
82             return response;
83         }
84 }
时间: 2024-10-18 15:56:42

java 下载示例的相关文章

jxl创建Excel文件java代码示例

记得要下载 并 导入 jxl.jar 包,免积分下载地址:http://download.csdn.net/detail/u010011052/7561041 package Test; import java.io.*; import jxl.*; import jxl.format.Colour; import jxl.write.*; public class JXLTest { private static WritableWorkbook book; private static Wr

Android之——断点下载示例

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46897641 在上一篇博文<Android之--多线程下载示例>中,我们讲解了如何实现Android的多线程下载功能,通过将整个文件分成多个数据块,开启多个线程,让每个线程分别下载一个相应的数据块来实现多线程下载的功能.多线程下载中,可以将下载这个耗时的操作放在子线程中执行,即不阻塞主线程,又符合Android开发的设计规范. 但是当下载的过程当中突然出现手机卡死,或者网络中断

RPC学习----Thrift快速入门和Java简单示例

一.什么是RPC? RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议. RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据.在OSI网络通信模型中,RPC跨越了传输层和应用层.RPC使得开发包括网络分布式多程序在内的应用程序更加容易. 二.什么是Thrift? thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和

JSP中文件的上传于下载示例

一.文件上传的原理 1.文件上传的前提: a.form表单的method必须是post b.form表单的enctype必须是multipart/form-data(决定了POST请求方式,请求正文的数据类型) 注意:当表单的enctype是multipart/form-data,传统的获取请求参数的方法失效. 请求正文:(MIME协议进行描述的,正文是多部分组成的) -----------------------------7dd32c39803b2 Content-Disposition:

Java下载与安装方法

本文适合刚入门的Java编程的初学者阅读. JDK有两种下载方法,一个是官网下载,另一个是第三方网站下载.官网速度也许有点慢,慢的话可以考虑去第三方网站下载. 一.官网下载 1. 访问地址:http://www.oracle.com/cn/downloads/index.html.在本下载页面,点击”热门下载“栏目下的”Java下载“,或下面”所有下载信息“栏目中的”Java 查看所有Java下载“. 2. 进入下载页,点击”按类别浏览“栏目下”Java“类别中的Java SE 3. 进入新页面

Java下载文件

下面的代码简单的实现了java下载文件的步骤,看代码: protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取文件的类名 String Path=this.getClass().getResource("/").getPath()+"JAVA笔记.txt"; //对获取的路径进

JAVA接口示例

总感觉有点虚,但慢慢找到感觉了.将对象放进数组里,这就比较深入了. interface drawTest{ public void draw(); public void doAnyThing(); } class ParallelogramUserInterface extends QuadrangleUserInterface implements drawTest{ public void draw(){ System.out.println("Parallelogram.draw()&q

Java 同步示例

同步 1)同步方法 2)同步块 21) 实例变量 22) 类变量 锁定的内容 1)锁定类的某个特定实例 2)锁定类对象(类的所有实例) 一.同步类实例:同步方法 public class Demo { public synchronized void m1(){ //............... } public void m2(){ //............ synchronized(this){ //......... } //........ } } 这两种写法的效果是一样的,锁定的

JAVA多态示例

这多态,我觉得是最利害的.在开发大型程序中. 但,也是需要经过足够多的实践经验才能随心利用的. class Quadrangle{ private Quadrangle[] qtest = new Quadrangle[6]; private int nextIndex = 0; public void draw(Quadrangle q){ if(nextIndex < qtest.length){ qtest[nextIndex] = q; System.out.println(nextIn