注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

_

_

 
 
 

日志

 
 

Java文件下载  

2014-11-28 17:36:12|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

Java文件下载

Java文件下载的几种方式

复制代码

public HttpServletResponse download(String path, HttpServletResponse response) {
try {
// path是指欲下载的文件的路径。
??????????? File file = new File(path);
// 取得文件名。
??????????? String filename = file.getName();
// 取得文件的后缀名。
??????????? String ext = filename.substring(filename.lastIndexOf(".") + 1).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[100];
int len;
try {
while ((len = inStream.read(b)) > 0)
??????????????? response.getOutputStream().write(b, 0, len);
??????????? inStream.close();
??????? } catch (IOException e) {
??????????? e.printStackTrace();
??????? }
??? }
public void downloadNet(HttpServletResponse response) throws MalformedURLException {
// 下载网络文件
int bytesum = 0;
int byteread = 0;
??????? 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[1204];
int length;
while ((byteread = inStream.read(buffer)) != -1) {
??????????????? bytesum += byteread;
??????????????? System.out.println(bytesum);
??????????????? fs.write(buffer, 0, 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(404, "File not found!");
return;
??????? }
??????? BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buf = new byte[1024];
int len = 0;
??????? 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)) > 0)
??????????? out.write(buf, 0, len);
??????? br.close();
??????? out.close();
??? }

复制代码

  评论这张
 
阅读(154)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017