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();
}
分享到:
相关推荐
### Java文件下载的几种方式详解 在Java编程中,文件下载是常见的操作之一,无论是从本地文件系统还是网络上下载文件,都需要掌握一定的技巧和方法。本文将详细介绍几种常用的Java文件下载方式,包括本地文件下载、...
Java文件下载的几种方式,是很方便的,找了半天找到了,共享一下
"用Jsp实现文件下载功能的几种方式" 本文将介绍用Jsp实现文件下载功能的几种方式。这些方式都可以实现文件下载的功能,但每种方式都有其特点和缺点。 方式一:直接提供文件地址 这种方式是最直接最简单的,即把...
JSP 文件下载的几种方式 JSP 文件下载是 Web 应用程序中的一种常见需求,通常有多种方式来实现文件下载。本文将介绍三种常见的 JSP 文件下载方式,并对每种方式的优缺点进行了分析。 方式一:直接链接下载 这种...
本文将详细介绍几种常见的下载文件方式。 1. **直接点击下载** 这是最基本的下载方式,通常在网页上,我们点击一个链接或按钮,浏览器会自动开始下载文件。例如,`xiazai.aspx`可能是一个网页,用户可以直接点击...
本文档旨在介绍WinAC RTX组态下载的几种方式,帮助自动化工程师更好地进行系统配置和程序部署。 首先,需要理解WinAC RTX与传统PLC(如S7-300)的区别。传统PLC是基于专有硬件平台的,而WinAC RTX则安装在通用的...
首先,让我们了解一下Java生成Excel的几种常见库: 1. **JXL库**:压缩包中的`jxl.jar`文件就是JXL库,这是一个广泛使用的Java库,用于读写Excel文件。JXL支持多种Excel操作,如创建工作簿、添加工作表、设置单元格...
使用Axis调用WebService时,你需要先下载Axis的二进制包,然后通过WSDL(Web服务描述语言)文件生成客户端存根类。这些存根类提供了与服务交互的方法,使得开发者可以像调用本地方法一样调用远程服务。 2. CXF:...
下载电缆是FPGA下载方式中的一种重要组件,Altera下的下载电缆分为byteblaster和byteblasterII两种,.pof文件可以通过AS方式下载(保证byteblasterII/usb blaster连接正确);.sof文件或者转换的.jic可以通过JTAG...
这篇博客"java下载文件的种方式"可能详细介绍了几种不同的Java实现文件下载的方法。以下是对这些方法的总结和扩展: 1. **HTTP响应流下载** 这是最基本的方式,通过Servlet或Spring MVC等框架处理HTTP请求,然后在...
Java 中的文件写入方式 在 Java 中,文件写入是一种常见的操作,用于将数据写入到文件中。在本文中,我们将介绍三种常见的文件写入方式,即使用 ...每种方式都有其优缺,需要根据实际情况选择合适的写入方式。
本资料包“基于C#的WebAPI断点续传几种方式及WebClient断点续传下载.zip”主要探讨了两种在C#环境下实现断点续传的方法:一是通过WebAPI实现服务端的断点续传功能,二是使用WebClient类进行客户端的断点续传下载。...
本文将详细探讨几种简单但常用的加密方式,以及如何实现这些加密方法。 首先,我们来看MD5(Message-Digest Algorithm 5)哈希加密。MD5是一种广泛使用的哈希函数,它能够将任意长度的输入(也叫做预映射pre-image...
在Java编程中,文件下载是常见的需求,例如从服务器向客户端传输文件,或者在应用程序内部获取网络资源。本文将详细探讨Java实现...以上就是Java实现文件下载的几种常见方法,可以根据项目需求和环境选择合适的方式。
在网上看了一些for循环的效率问题,发现基本上都是一些理论的东西,且大多都是Copy来的,前后文自相矛盾。自己做了一个例子,来看看他们的效率 1.最慢 private long getTime1() { long time = 0;...
在给定的压缩包文件中,我们看到几个可能与文件下载和更新相关的文件: 1. AutoUpdate.cfg - 这可能是配置文件,包含了自动更新的设置,如FTP或HTTP服务器的URL,文件列表,更新策略等。 2. fMain.dcu, NetUnit.dcu...
Java 从网上下载文件的几种方式实例代码详解 本文将介绍 Java 中从网上下载文件的几种方式,通过实例代码详解,讲解了使用传统 IO 流、Apache Commons IO 库和 NIO 库等方法下载文件的详细过程。 知识点一:使用...
本示例可能使用了其中的一种,这些库可以方便地发起HTTP请求并接收响应,从而实现文件的下载。 2. **文件存储**:Android提供了多种存储方式,如内部存储、外部存储(SD卡)以及自定义私有目录。下载的文件需保存到...
每种方式都有其适用的场景和特点。以下将详细介绍这几种存储方式,并针对Android平台的特定实现进行讨论。 1. SharedPreferences SharedPreferences是Android提供的一种轻量级的数据存储方式,主要用于存储简单的...