关键字:java 文件下载
在页面上我们一般用超链接执行文件下载,如果是菜单方式,可以使用:
window.location =url 或
window.open(url,'_self')方式来调用,注意不能用ajax方式来调用,因为Ajax不能进行文件流的传输,无论哪个框架还是自己写都一样。
下面是文件下载的java后台的几种实现方式
参考自:http://www.cnblogs.com/ungshow/archive/2009/01/12/1374491.html
1.一般下载
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-Disposition",
"attachment;filename=" + new String("中文名".getBytes(),"iso8859-1")
+ ".dat");
response.addHeader("Content-Length", "" + file.length());
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream");
//response.setContentType("application/excel");excel文件下载
toClient.write(buffer);
toClient.flush();
toClient.close();
//xml文件下载
/*OutputStream out = response.getOutputStream();
//OutputStream out = new BufferedOutputStream(response.getOutputStream());
response.setContentType("text/xml");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(out, format);
writer.write(doc);
writer.close();
out.close();*/
}
catch (IOException ex) {
ex.printStackTrace();
}
return null;
2. 下载本地文件
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();
}
3.下载网络文件
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();
}
4.支持在线打开文件的一种方式
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文件下载方式,包括本地文件下载、网络文件下载以及支持断点续传的下载方式。 #### 1. 本地文件下载 本地文件下载主要涉及到读取本地文件并将其发送到客户端的过程。以下代码示例展示...
此外,安装完成后,开发者还需要熟悉JDK的工具集,如编译器(javac)、运行环境(java)、文档生成工具(javadoc)和打包工具(jar)等,这些都是进行Java开发过程中不可或缺的工具。 Java JDK 1.8支持的编程语言...
Java下载功能的实现有多种方式,一般来说可以分为三种:第一种是将要下载的内容写到本地目录,然后将目录返回给前端,利用a标签下载;第二种是本地不允许访问,挂载目录,使目录可以对外访问,同样的,把目录返给...
基于Java文件输入输出流实现文件上传下载功能 本文将详细介绍基于Java文件输入输出流实现文件上传下载功能的相关知识点,包括文件上传和下载的实现原理、Java文件输入输出流的基础操作、Servlet的使用等。 文件...
### Java批量下载文件并压缩为ZIP的技术解析 #### 核心知识点:批量文件下载与ZIP压缩 在现代软件开发中,文件操作是一项基本且重要的功能。对于需要处理大量文件的应用程序来说,批量下载文件并将其压缩成一个ZIP...
Free Spire.Office for Java是一套全面的文档处理库,它支持创建、读取、编辑和转换多种办公文档格式。在这个场景中,我们主要利用它的Word、PPT和PDF处理功能来添加文本水印。 2. **添加Word文本水印** 使用Free...
Java作为广泛应用的编程语言,提供了多种库来实现PDF的电子签名功能。在这个项目中,我们主要探讨了利用iTextPDF和PDFBox两个库在Java环境下如何进行PDF电子签名的实现。 iTextPDF是一个流行的Java库,专门用于创建...
Java实现FTP批量大文件上传下载 一、Java FTP客户端库的选择 在选择Java FTP客户端库时,需要考虑多个因素,例如性能、安全性、可靠性等。当前有多种FTP客户端库可供选择,例如J-FTP、SimpleFTP、FTPClient等。每...
总的来说,"java上传,下载组件"是为了简化Java Web应用中的文件交互操作,通过提供高效、安全、易用的工具,使得开发者能够专注于业务逻辑,而不是底层实现。这个组件的实现可能包含了上述提到的多种技术和最佳实践...
总之,"基于Java的book118文档下载器"是一个综合运用了网络请求、HTML解析、文件操作等多种Java技术的实用工具,其具体实现会涉及到网络编程、数据解析、文件I/O等多个计算机科学和技术领域。对于学习Java编程和网络...
以下是一些获取Java CHM帮助文档的下载地址以及相关的学习资源: 1. **Oracle官方Java文档**:Oracle官方网站提供了完整的Java SE(标准版)和Java EE(企业版)的官方文档,包括JDK API文档。虽然不是CHM格式,但...
- JDK(Java Development Kit)是Java开发的核心工具集,包含了JRE(Java Runtime Environment)和开发工具,如Javac编译器、Javadoc文档生成器等。 - JDK 17提供了对Java语言、类库、JVM(Java虚拟机)和工具的...
在Java开发中,文件上传和下载是常见的...综上所述,实现Java中的文件上传下载功能,需要结合多种技术和库,同时考虑安全性、性能和用户体验等因素。开发者应当熟练掌握相关知识点,以构建稳定且高效的文件操作功能。
`打开方式.htm`可能是关于如何阅读和利用这个CHM文档的指南,而`.url`文件则可能是一个链接,指向其他相关的学习资源,如“爱书吧-2万本图书免费下载”,可能提供了更多的学习资料。 总之,这份中文版的Java API...
Java开发工具包(JDK)提供了多种命令,如"Java"、"Javac"、"Javadoc"、"appletviewer"等,在Java帮助文档中也对此进行了详细的介绍。Java帮助文档是以HTML文件的形式组织,用浏览器就可以进行查阅。 程序员可以...
- 在macOS上安装Java 19.0.1,首先需要下载对应版本的.dmg文件,双击打开后,会看到一个Java图标,将其拖拽到"Applications"文件夹完成安装。 - 安装完成后,为了在命令行中使用Java,需要配置`JAVA_HOME`环境变量...
RTF(Rich Text Format)是一种通用格式,可以被多种文字处理程序如Microsoft Word支持,使得文件在不同平台间具有良好的兼容性。本篇文章将深入探讨如何在Java中生成RTF文档,并与Word文档进行比较。 首先,Java...
Java JDK 下载安装指南 Java 开发环境的配置是每个 Java 开发者的必备技能,下面将详细介绍 Java ...JDK 的下载和安装是 Java 开发环境的基础,而正确的安装方式和卸载方式可以确保 Java 应用程序的正确运行和稳定性。
Java远程传输文件 Java是一种跨平台的语言,在实际开发中,经常需要传输文件,该代码是一个很好的传输文件的例子。...该代码实现了Java远程传输文件的功能,使用了多种技术和方法来实现文件的下载和上传。
总之,Java提供了多种方法处理文件上传和下载,开发者可以根据项目需求选择合适的方式。无论使用Servlet API还是第三方库,都需要确保文件操作的安全性,如防止路径遍历攻击、文件覆盖等问题。同时,优化文件读写...