一、实现功能:页面上显示附件链接,点击链接,弹出“文件下载”框,打开或保存文件。
(ps:最简单常见的功能,却有很多地方需要注意)
二、过程:采用 servlet1 提供“附件列表”数据,在页面显示所有附件链接,点击链接经过servlet2处理,弹出“文件下载”框,打开或保存文件。
1、在index页面,通过点击链接向GotoAttachServlet发出请求。
2、GotoAttachServlet 提供附件列表,转向download.jsp 页面。
3、在download.jsp 点击某个附件链接,通过DownloadServlet处理,弹出“文件下载”框,打开或保存该文件。
注:为了方便,数据没有从数据库中取。整个过程是完整的,其实只要关注DownloadServlet.java中相关代码即可。
三、实现。
1、index中的相关代码。
<a href="GotoAttachServlet">附件页面</a>
2、GotoAttachServlet中相关代码。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<Attachment>attachList = new ArrayList<Attachment>();
Attachment attach1=new Attachment(1,"flower.png","d://flower.jpg");
attachList.add(attach1);
Attachment attach2=new Attachment(2,"tree.txt","d://tree.txt");
attachList.add(attach2);
request.setAttribute("attachList", attachList);
request.getRequestDispatcher("download.jsp").forward(request, response);
}
3、download.jsp 代码。
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>下载</title>
<script src="<%=basePath%>js/jquery-1.4.4.js"></script>
<script type="text/javascript">
function download(attachId){
var url="/MyWeb/DownloadServlet?attachId="+attachId;
$('#attachmentForm').attr('action',url).submit();
}
</script>
</head>
<body>
<div>附件下载</div>
<form id="attachmentForm" method="post">
<table>
<tr>
<td>附件:</td>
<td>
<ul>
<c:forEach items="${attachList}" var="attach">
<li>
<a href="#" onclick="download('${attach.id}')">${attach.name}</a>
</li>
</c:forEach>
</ul>
</td>
</tr>
</table>
</form>
</body>
</html>
4、DownLoadServlet.java中相关代码。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String idStr=request.getParameter("attachId");
Attachment attachment=null;
if(idStr.equals("1")){
attachment=new Attachment(1,"flower.png","d://flower.jpg");
}else{
attachment=new Attachment(2,"tree.txt","d://tree.txt");
}
String downFilePath=attachment.getPath();
String fileName = attachment.getName();
fileName = URLEncoder.encode(fileName, "UTF-8");
// 设置响应信息
response.reset();
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment;filename="
+ fileName);
response.setCharacterEncoding("utf-8");
// 得到流
InputStream inputStream = new FileInputStream(downFilePath);
ServletOutputStream servletOutputStream=response.getOutputStream();
final int size = 1024;
byte[] buffer = new byte[size];
int length;
while ((length = inputStream.read(buffer)) > 0) {
servletOutputStream.write(buffer, 0, length);
}
servletOutputStream.flush();
servletOutputStream.close();
} }
5、你可能看不明白的地方:
1、response.setContentType("application/octet-stream"); 参看:http://wuyechun.iteye.com/blog/1132423
2、response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
在使用来自 Web 服务器的文档时,您可能希望立即提示用户将文件直接保存在用户磁盘上,而不要在浏览器中打开该文件。不过,对于已知的 MIME(多用途 Internet 邮件扩展)类型,如 Microsoft Word ("application/ms-word"),默认行为是在 Internet Explorer 中打开文档。
可以使用 Content-disposition 头来覆盖此默认行为。其格式是:
Content-disposition: attachment; filename=fname.ext
分享到:
相关推荐
今天整理了一个jsp附件上传模块,结合jquery Uploadify插件,可以一次性上传多个附件,而且自带上传进度功能,非常漂亮的界面和强大的功能。 Uploadify插件是由国外开发的一个jquery插件,功能非常的齐全,包括同时...
在这个"jsp附件上传与下载的小例子"中,我们将深入探讨如何使用JSP实现文件的上传与下载功能。这个小例子可能涉及了两个关键库:jspupload和jspsmartupload。 jspupload是一个早期的开源库,专门用于处理JSP文件...
本文将深入探讨如何使用Java和JSP(JavaServer Pages)技术实现文件的上传与下载功能。 首先,我们需要理解JSP的基础。JSP是一种基于Java的技术,它允许开发者在HTML页面中嵌入Java代码,以实现动态网页生成。JSP...
"jsp实现下载"这个主题涉及到如何在JSP中构建一个能够提供文件下载的功能。下面我们将深入探讨这一话题。 首先,我们需要理解JSP中的下载流程。当用户点击一个链接或按钮时,浏览器会向服务器发送一个请求,服务器...
"jsp实现附件上传功能源码-基础源码" 这个标题指出,我们关注的是一个使用JSP技术实现的附件上传功能。JSP(JavaServer Pages)是Java平台上的一种动态网页技术,它允许开发人员在HTML页面中嵌入Java代码,以实现...
`Content-Disposition`指定浏览器应以附件形式下载文件,并可以设置文件名,如`attachment; filename=example.txt`。 4. **读取文件并输出**:使用Java的`java.io`包中的`FileInputStream`读取文件内容,然后通过`...
本教程将深入讲解如何利用JSP和Servlet来实现大型文件的下载功能,这对于构建高效、稳定的Web应用至关重要。 一、Servlet简介 Servlet是Java平台上的一个标准接口,用于扩展服务器的功能。在Web开发中,Servlet通常...
### jsp+servlet实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...
本教程主要围绕"jsp+sql05 附件上传与下载"展开,探讨如何利用Java Server Pages (JSP) 技术配合SQL Server 2005数据库来实现文件的上传与下载。 一、JSP简介 JSP(Java Server Pages)是Java平台上的动态网页技术...
本项目是一个基于JSP技术实现的邮箱系统,主要功能包括收发邮件以及发送附件,这在Web应用开发中是一项重要的实践。下面将详细阐述这个系统的相关知识点。 1. JSP(JavaServer Pages)基础: JSP是Java平台上的...
本项目专注于解决在JSP中实现文件上传和下载时遇到的一些常见问题,特别是针对中文文件名的处理。下面我们将深入探讨这个主题。 首先,文件上传通常涉及到HTTP协议中的multipart/form-data类型表单。在JSP中,我们...
标题中的“poi+jsp 实现excel的上传下载的小例子”是指使用Apache POI库与Java Server Pages(JSP)技术来处理Excel文件的上传和下载功能。Apache POI是一个流行的开源项目,它允许开发者在Java应用程序中创建、修改...
【JSP多附件上传系统】是一个基于Java JSP技术实现的Web应用,旨在提供一个能够支持用户上传多个文件的功能。在传统的Web开发中,单个文件上传是常见的操作,但随着互联网应用的发展,多文件上传的需求越来越普遍,...
本话题关注的是如何在JSP页面上实现文件下载功能,这对于构建一个交互性强、功能丰富的Web应用是至关重要的。以下我们将详细探讨这个主题。 首先,我们需要理解JSP页面的基本结构和工作原理。JSP页面由HTML、CSS、...
以上就是使用JSP和SmartUpload组件实现文件上传与下载的基本步骤和关键点。在实际应用中,还需要考虑错误处理、安全性(防止文件覆盖、大小限制、非法文件类型)等问题,以及优化用户体验,如显示上传进度、预览文件...
本篇将深入探讨如何使用JSP与KindEditor在线编辑器实现图片和附件的上传功能,并分享一套已经成功部署并经过测试的源码。首先,我们需要了解JSP(JavaServer Pages)和KindEditor的基本概念。 **JSP技术介绍** JSP...
本项目详细阐述了如何利用JSP实现文件的上传和下载功能。 首先,文件上传涉及的主要技术有HTML表单、Servlet和多部分请求。在HTML表单中,我们需要设置`<input type="file">`标签让用户选择要上传的文件。当用户...
在Java和JSP中,实现文件下载是一项常见的任务,它涉及到服务器与客户端之间的交互,以及对文件流的处理。下面将详细讲解如何使用Java和JSP来实现这一功能。 首先,我们从`downloadtool.jsp`开始,这是一个用户界面...
在本教程“JSP实现文件的上传下载视频教程”中,我们将深入探讨如何利用Apache Commons FileUpload库在JSP环境中实现文件的上传和下载功能,这对于构建交互性强、功能丰富的Web应用程序至关重要。 1. **Apache ...
总结来说,这个“带附件的发送邮件JSP程序”是一个综合性的应用,它整合了JSP、SMTP、JavaMail API以及HTML表单处理等技术,实现了通过网页界面发送带有附件的电子邮件。开发者在实现这样的程序时,需要对这些技术有...