`

jsp 附件下载的实现

    博客分类:
  • JSP
 
阅读更多

一、实现功能:页面上显示附件链接,点击链接,弹出“文件下载”框,打开或保存文件。

(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附件上传模块,JS实现文件上传功能

    今天整理了一个jsp附件上传模块,结合jquery Uploadify插件,可以一次性上传多个附件,而且自带上传进度功能,非常漂亮的界面和强大的功能。 Uploadify插件是由国外开发的一个jquery插件,功能非常的齐全,包括同时...

    jsp附件上传与下载的小例子

    在这个"jsp附件上传与下载的小例子"中,我们将深入探讨如何使用JSP实现文件的上传与下载功能。这个小例子可能涉及了两个关键库:jspupload和jspsmartupload。 jspupload是一个早期的开源库,专门用于处理JSP文件...

    jsp实现文件上传下载

    本文将深入探讨如何使用Java和JSP(JavaServer Pages)技术实现文件的上传与下载功能。 首先,我们需要理解JSP的基础。JSP是一种基于Java的技术,它允许开发者在HTML页面中嵌入Java代码,以实现动态网页生成。JSP...

    jsp实现下载

    "jsp实现下载"这个主题涉及到如何在JSP中构建一个能够提供文件下载的功能。下面我们将深入探讨这一话题。 首先,我们需要理解JSP中的下载流程。当用户点击一个链接或按钮时,浏览器会向服务器发送一个请求,服务器...

    jsp实现附件上传功能源码-基础源码

    "jsp实现附件上传功能源码-基础源码" 这个标题指出,我们关注的是一个使用JSP技术实现的附件上传功能。JSP(JavaServer Pages)是Java平台上的一种动态网页技术,它允许开发人员在HTML页面中嵌入Java代码,以实现...

    java jsp+servlet实现文件下载(而不是在网页中显示出文件内容) 迅雷下载功能.zip

    `Content-Disposition`指定浏览器应以附件形式下载文件,并可以设置文件名,如`attachment; filename=example.txt`。 4. **读取文件并输出**:使用Java的`java.io`包中的`FileInputStream`读取文件内容,然后通过`...

    jsp+servlet实现大型文件下载

    本教程将深入讲解如何利用JSP和Servlet来实现大型文件的下载功能,这对于构建高效、稳定的Web应用至关重要。 一、Servlet简介 Servlet是Java平台上的一个标准接口,用于扩展服务器的功能。在Web开发中,Servlet通常...

    jsp+servlet实现文件上传下载

    ### jsp+servlet实现文件上传下载 在现代Web开发中,文件上传下载是常见的功能之一。JSP(JavaServer Pages)与Servlet技术结合可以轻松实现这一功能。本篇将详细介绍如何利用jspSmartUpload组件实现文件的上传与...

    jsp+sql05附件上传与下载

    本教程主要围绕"jsp+sql05 附件上传与下载"展开,探讨如何利用Java Server Pages (JSP) 技术配合SQL Server 2005数据库来实现文件的上传与下载。 一、JSP简介 JSP(Java Server Pages)是Java平台上的动态网页技术...

    jsp邮箱系统,实现了收邮件和发送附件

    本项目是一个基于JSP技术实现的邮箱系统,主要功能包括收发邮件以及发送附件,这在Web应用开发中是一项重要的实践。下面将详细阐述这个系统的相关知识点。 1. JSP(JavaServer Pages)基础: JSP是Java平台上的...

    jsp文件的上传和下载

    本项目专注于解决在JSP中实现文件上传和下载时遇到的一些常见问题,特别是针对中文文件名的处理。下面我们将深入探讨这个主题。 首先,文件上传通常涉及到HTTP协议中的multipart/form-data类型表单。在JSP中,我们...

    poi +jsp 实现excel的上传下载的小例子

    标题中的“poi+jsp 实现excel的上传下载的小例子”是指使用Apache POI库与Java Server Pages(JSP)技术来处理Excel文件的上传和下载功能。Apache POI是一个流行的开源项目,它允许开发者在Java应用程序中创建、修改...

    JSP多附件上传系统

    【JSP多附件上传系统】是一个基于Java JSP技术实现的Web应用,旨在提供一个能够支持用户上传多个文件的功能。在传统的Web开发中,单个文件上传是常见的操作,但随着互联网应用的发展,多文件上传的需求越来越普遍,...

    jsp页面下载文件

    本话题关注的是如何在JSP页面上实现文件下载功能,这对于构建一个交互性强、功能丰富的Web应用是至关重要的。以下我们将详细探讨这个主题。 首先,我们需要理解JSP页面的基本结构和工作原理。JSP页面由HTML、CSS、...

    jsp实现文件的上传与下载

    以上就是使用JSP和SmartUpload组件实现文件上传与下载的基本步骤和关键点。在实际应用中,还需要考虑错误处理、安全性(防止文件覆盖、大小限制、非法文件类型)等问题,以及优化用户体验,如显示上传进度、预览文件...

    jsp实现kindeditor在线编辑器可上传图片,附件源码献上

    本篇将深入探讨如何使用JSP与KindEditor在线编辑器实现图片和附件的上传功能,并分享一套已经成功部署并经过测试的源码。首先,我们需要了解JSP(JavaServer Pages)和KindEditor的基本概念。 **JSP技术介绍** JSP...

    基于jsp的文件上传下载

    本项目详细阐述了如何利用JSP实现文件的上传和下载功能。 首先,文件上传涉及的主要技术有HTML表单、Servlet和多部分请求。在HTML表单中,我们需要设置`&lt;input type="file"&gt;`标签让用户选择要上传的文件。当用户...

    java+jsp 文件下载(服务器上的文件)

    在Java和JSP中,实现文件下载是一项常见的任务,它涉及到服务器与客户端之间的交互,以及对文件流的处理。下面将详细讲解如何使用Java和JSP来实现这一功能。 首先,我们从`downloadtool.jsp`开始,这是一个用户界面...

    JSP实现文件的上传下载视频教程

    在本教程“JSP实现文件的上传下载视频教程”中,我们将深入探讨如何利用Apache Commons FileUpload库在JSP环境中实现文件的上传和下载功能,这对于构建交互性强、功能丰富的Web应用程序至关重要。 1. **Apache ...

    带附件的发送邮件JSP程序

    总结来说,这个“带附件的发送邮件JSP程序”是一个综合性的应用,它整合了JSP、SMTP、JavaMail API以及HTML表单处理等技术,实现了通过网页界面发送带有附件的电子邮件。开发者在实现这样的程序时,需要对这些技术有...

Global site tag (gtag.js) - Google Analytics