public HttpServletResponse download(String path, HttpServletResponse response) {
try {
// path是指欲下载的文件的路径。
File file = new File(path);
// 取得文件名。
String filename = file.getName();
// 取得文件的后缀名。
String ext = filename.substring(filename.lastIndexOf(".") + ).toUpperCase(); // 以流的形式下载文件。
InputStream fis = new BufferedInputStream(new FileInputStream(path));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
fis.close();
// 清空response
response.reset();
// 设置response的Header
response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));
response.addHeader("Content-Length", "" + file.length());
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
toClient.write(buffer);
toClient.flush();
toClient.close();
} catch (IOException ex) {
ex.printStackTrace();
}
return response;
} public void downloadLocal(HttpServletResponse response) throws FileNotFoundException {
// 下载本地文件
String fileName = "Operator.doc".toString(); // 文件的默认保存名
// 读到流中
InputStream inStream = new FileInputStream("c:/Operator.doc");// 文件的存放路径
// 设置输出的格式
response.reset();
response.setContentType("bin");
response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
// 循环取出流中的数据
byte[] b = new byte[];
int len;
try {
while ((len = inStream.read(b)) > )
response.getOutputStream().write(b, , len);
inStream.close();
} catch (IOException e) {
e.printStackTrace();
}
} public void downloadNet(HttpServletResponse response) throws MalformedURLException {
// 下载网络文件
int bytesum = ;
int byteread = ; URL url = new URL("windine.blogdriver.com/logo.gif"); try {
URLConnection conn = url.openConnection();
InputStream inStream = conn.getInputStream();
FileOutputStream fs = new FileOutputStream("c:/abc.gif"); byte[] buffer = new byte[];
int length;
while ((byteread = inStream.read(buffer)) != -) {
bytesum += byteread;
System.out.println(bytesum);
fs.write(buffer, , byteread);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

还有一种,可以在线打开的方式:

 public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {
File f = new File(filePath);
if (!f.exists()) {
response.sendError(, "File not found!");
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[];
int len = ; response.reset(); // 非常重要
if (isOnLine) { // 在线打开方式
URL u = new URL("file:///" + filePath);
response.setContentType(u.openConnection().getContentType());
response.setHeader("Content-Disposition", "inline; filename=" + f.getName());
// 文件名应该编码成UTF-8
} else { // 纯下载方式
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());
}
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > )
out.write(buf, , len);
br.close();
out.close();
}

最新文章

  1. jmeter ForEach Controller学习
  2. CocoaPods报错:The dependency `Alamofire ` is not used in any concrete target
  3. wp中TextBox在中文输入法下清空问题
  4. ACM数论之旅7---欧拉函数的证明及代码实现(我会证明都是骗人的╮( ̄▽ ̄)╭)
  5. saltstack学习
  6. ubuntu 16.04 忘记root密码的处理方法
  7. iOS - NSURLConnection 网络请求
  8. Mybatis-Generator 自动生成Dao、Model、Mapping相关文档
  9. JavaService wrapper
  10. dp related problems (update continuously)
  11. 360安全检测出的WordPress漏洞的修复方法
  12. 推荐系统(Recommendation system )介绍
  13. [Swift]LeetCode1029. 两地调度 | Two City Scheduling
  14. Laravel项目部署上线(阿里云 Ubuntu 16.04)
  15. 解决WCF“接收对 http://xxx.svc 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致"
  16. 网站后台搭建--springboot项目是如何创建的
  17. 提示“Web打印服务CLodop未安装启动”的各种原因和解决方法
  18. qt 安装包生成2
  19. Python函数定义、文件操作(读写、修改)
  20. Linux 第八天

热门文章

  1. python yeild使用
  2. devi into python 笔记(七)locals与globals 字典格式化字符串 字符集
  3. uva 10047 the monocyle (四维bfs)
  4. Yii快速入门教程
  5. Java多线程编程的常见陷阱(转)
  6. 【设计模式 - 22】之策略模式(Strategy)
  7. <input type="radio" >与<input type="checkbox">值得获取
  8. Jsp学习(1)
  9. leetCode 53.Maximum Subarray (子数组的最大和) 解题思路方法
  10. HighCharts基本使用实例(入门)