protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
try {
String filePath = this.getServletContext().getRealPath("/")
+ "/Help.chm";
if (req.getSession().getAttribute(Constants.USER_IN_SESSION) == null) {
String encode = (String) req.getSession()
.getAttribute("encode");
resp.sendRedirect(req.getContextPath() + "/login.jsp?encode="
+ encode);
} else {
try {
downLoad(filePath, resp, true);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (Exception e) {
System.out.println("Error!");
e.printStackTrace();
}
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(req, resp);
}
public void downLoad(String filePath, HttpServletResponse response,
boolean isOnLine) throws Exception {
try {
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();
} catch (Exception e) {
System.out.println("下载错误");
e.printStackTrace();
}
}
分享到:
相关推荐
为了克服这一问题,开发人员通常会利用Ajax技术来实现异步文件下载,使得用户在下载文件的同时仍能保持页面的正常操作。本话题将详细探讨如何通过Ajax实现Java文件的下载,并介绍相关的核心概念和技术。 1. **Ajax*...
在本场景中,我们关注的是如何使用libcurl通过HTTP协议下载文件并实时显示下载进度。下面将详细介绍这个过程。 首先,我们需要理解libcurl的基本用法。libcurl提供了一系列的API函数,用于初始化、设置选项、执行...
例如,一个节点可能需要将本地的文件上传到另一个节点,或者从其他节点下载文件。为了实现这种交互,你需要在每个节点上都配置HTTPClient,并且在服务端提供RESTful接口,处理文件上传和下载的逻辑。 **代码注释的...
在VB(Visual Basic)编程中,`URLDownloadToFile`是一个非常实用的API函数,它允许开发者从指定的URL下载文件到本地系统。这个函数属于Windows操作系统内置的`Wininet.dll`库,它提供了网络访问的功能,包括HTTP、...
在Android开发中,下载文件是一项常见的任务,尤其在构建应用时需要从服务器获取资源或更新数据。本"Android 下载文件Demo"旨在演示如何利用字节流进行文件下载操作。在Java和Android中,输入输出流(IO流)是处理...
- **下载文件**:`su.downloadFile("/upload/暂获取的第一个文件.doc");` 指定要下载的文件路径。 #### downloadFile 方法详解 在`do_download.jsp`中调用的`downloadFile`方法是从SmartUpload的Java类中提取出来的...
用webservice作为服务器端,以流的方式实现文件的上传和下载,可以自动调用winrar进行压缩和加密,支持多线程和断点续传功能,默认是16K一个包,全部源码,已经在实际项目中应用。客户端有winform和服务两种方式的...
【delphi阿里云对象存储OSS】支持 获取Bucket列表、设置Bucket权限)、创建Bucket、删除Bucket、获取文件列表、上传文件、下载文件、删除文件、读取文件、判断文件是否存在、创建目录、删除目录等功能。api接口文档...
ASP.NET中提供可以在页面下载存储在后台的文件,很好用哦
内容识别算法则可能通过分析网页内容,如文件扩展名、文件类型描述或者特定的标识符来判断文档的类型,确保能够准确地定位到需要下载的文件。 Fish工具的使用流程可能如下: 1. 用户打开Fish应用或访问其网页版。 ...
在本文中,我们将深入探讨如何在WPF应用中实现从网络下载文件并将其保存到本地指定路径。这个过程涉及到多个关键知识点,包括网络请求、文件流处理和UI更新。我们将结合给定的标题和描述来详细阐述这些概念。 首先...
3. 文件下载:冰点文库会解析链接并开始下载文档,下载完成后,用户可以在指定的保存路径中找到文档。 4. 文件格式转换:下载的文档通常是PDF或HTML格式,如果需要其他格式,如Word,可以使用第三方转换工具进行...
综上所述,在线查看和下载文档的功能涉及到前端的展示技术、后端的文件服务以及安全性和用户体验等多个方面。通过合理的设计和实现,我们可以创建出高效、易用的文档管理系统,满足用户在不同场景下的需求。在这个...
8. **安全性考虑**:在实现HTTP文件下载时,还需关注安全问题,如使用HTTPS确保传输过程的安全,验证下载文件的完整性(例如通过校验和或数字签名)等。 9. **性能优化**:为了提高下载速度和用户体验,可能需要...
我们在项目中在下载文件会出现中文乱码,这个文档可以很好的解决乱码问题
接着,`下载文件进度条同步`涉及到网络编程和UI更新。在C#中,通常使用`WebClient`或`HttpClient`类进行文件下载。为了显示下载进度,我们需要使用`ProgressBar`控件,并配合异步编程(如`async/await`关键字)来...
4. **下载功能**:下载文件时,类会发送一个GET请求到指定URL,然后接收服务器返回的数据流。为了高效,可能需要支持断点续传,即记录已下载的部分并在下次继续下载。 5. **错误处理**:良好的封装类会提供详细的...
在线文档下载器可能使用此库来解析和处理从网站下载的PDF文件,确保用户可以本地存储和阅读这些文档。 “iDocDown.exe”是主程序执行文件,是在线文档下载器的核心部分。它包含了实现下载功能的算法和逻辑,能够...
3. 文件格式:下载的文档可能与原文档格式不同,例如,原本是PDF的文档可能会被转换成其他格式,这可能导致文档格式混乱或部分内容丢失。因此,下载后需要检查文档的完整性和阅读效果。 4. 效率与稳定性:虽然...
这些工具能够解析百度文库的页面,抓取文档内容并将其转换成本地文件。使用这类工具时,用户需要复制百度文库文档的网页链接,然后粘贴到工具的输入框内,按照提示进行操作。值得注意的是,这种方法可能受制于网站的...