jsp中实现文件下载的最简单的方式是在网页上做超级链接,如:<a href="music/abc.mp3">点击下载</a>。但是这样服务器上的目录资源会直接暴露给最终用户,会给网站带来一些不安全的因素。因此可以采用其它方式实现下载,可以采用:1、RequestDispatcher的方式进行;2、采用文件流输出的方式下载。
1、采用RequestDispatcher的方式进行
jsp页面中添加如下代码:
<%
response.setContentType("application/x-download");//设置为下载application/x-download
String filedownload = "/要下载的文件名";//即将下载的文件的相对路径
String filedisplay = "最终要显示给用户的保存文件名";//下载文件时显示的文件保存名称
filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);
try
{
RequestDispatcher dis = application.getRequestDispatcher(filedownload);
if(dis!= null)
{
dis.forward(request,response);
}
response.flushBuffer();
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
}
%>
2、采用文件流输出的方式下载
<%@page language="java" contentType="application/x-msdownload" pageEncoding="gb2312"%><%
//关于文件下载时采用文件流输出的方式处理:
//加上response.reset(),并且所有的%>后面不要换行,包括最后一个;
response.reset();//可以加也可以不加
response.setContentType("application/x-download");
String filedownload = "想办法找到要提供下载的文件的物理路径+文件名";
String filedisplay = "给用户提供的下载文件名";
filedisplay = URLEncoder.encode(filedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename=" + filedisplay);
OutputStream outp = null;
FileInputStream in = null;
try
{
outp = response.getOutputStream();
in = new FileInputStream(filenamedownload);
byte[] b = new byte[1024];
int i = 0;
while((i = in.read(b)) > 0)
{
outp.write(b, 0, i);
}
outp.flush();
}
catch(Exception e)
{
System.out.println("Error!");
e.printStackTrace();
}
finally
{
if(in != null)
{
in.close();
in = null;
}
if(outp != null)
{
outp.close();
outp = null;
}
}
%>
在wsad里面写JSP文件下载,总是出现这个异常,getOutputStream() has already been called for this response,输出流已经被调用了.
上网查半天终于明白一点,JSP早下载文件的时候用到了OutputStream,而在Application Server在处理编译jsp时对于%>和<%之间的内容一般是原样输出,而且默认是PrintWriter.
分享到:
相关推荐
"JSP实现文件上传与下载" JSP(Java Server Pages)是一种动态网页技术,用于开发基于Web的应用程序。...JSP文件上传和下载是Web应用程序中常用的功能,需要注意文件上传和下载的安全性、性能和可扩展性。
在这个场景下,我们关注的是如何在JSP页面中实现文件的下载功能。这个功能在很多网站上都常见,例如提供文档、软件或其他资源的下载服务。下面我们将详细探讨如何实现这一功能。 首先,为了创建一个下载链接,你...
jsp 实现 文件下载 jspsmartupload
在本文中,我们将学习如何使用 JSP 实现文件上传和下载功能。在这个过程中,我们将使用 Apache 的 Commons FileUpload 和 Commons IO 两个库来处理文件上传和下载。 首先,让我们了解一下文件上传和下载的基本概念...
本文将详细介绍如何使用JSP技术实现文件下载功能,并解释代码中涉及的关键概念和技术点。 #### 核心知识点解析 ##### 1. JSP页面结构 JSP(JavaServer Pages)是一种用于生成动态网页的技术,它允许将HTML、...
本文将深入探讨如何使用Java和JSP(JavaServer Pages)技术实现文件的上传与下载功能。 首先,我们需要理解JSP的基础。JSP是一种基于Java的技术,它允许开发者在HTML页面中嵌入Java代码,以实现动态网页生成。JSP...
总结,`jspSmartUpload`为Java Web开发者提供了一个强大的工具,使他们能够方便地实现文件上传和下载功能。通过了解`SmartUpload`类的关键方法和使用示例,开发者可以更好地在项目中集成这个组件,提升用户体验,...
本项目专注于解决在JSP中实现文件上传和下载时遇到的一些常见问题,特别是针对中文文件名的处理。下面我们将深入探讨这个主题。 首先,文件上传通常涉及到HTTP协议中的multipart/form-data类型表单。在JSP中,我们...
本项目的核心是实现文件下载功能,而不是在浏览器中显示文件内容,尤其针对迅雷这样的第三方下载工具进行优化。下面我们将深入探讨如何使用Java的这些技术来实现这一目标。 首先,`jsp`是Java的一个视图技术,主要...
jsp实现文件的上传下载是指通过jsp文件实现文件的上传和下载功能。jsp文件上传下载功能主要通过jspsmartupload组件来实现。jspsmartupload组件是一个免费的全功能的文件上传下载组件,适用于嵌入执行上传下载操作的...
在JSP文件中仅仅书写三五行JAVA代码就可以搞定文件的上传或下载,方便。 * 能全程控制上传。利用jspSmartUpload组件提供的对象及其操作方法,可以获得全部上传文件的信息(包括文件名,大小,类型,扩展名,文件数据...
### JSP实现文件下载功能详解 #### 一、引言 在Web开发中,文件下载是一项常见的需求。Java Server Pages(JSP)作为一种强大的服务器端技术,被广泛应用于构建动态网页。本文将详细介绍如何利用JSP实现文件下载...
在IT行业中,文件上传和下载是常见的功能需求,特别是在Web应用程序中。本示例通过结合JSP、JavaScript和Oracle数据库,提供了一种实现...理解并掌握这些技术,可以有效地实现在Web应用中处理文件上传和下载的需求。
在本文中,我们将深入探讨如何使用JSP(JavaServer Pages)和jspSmartUpload库来实现文件的上传与下载功能。JSP是一种动态网页技术,它允许开发者在HTML中嵌入Java代码,从而创建交互式的Web应用程序。而jsp...
此外,安全性和性能优化也是文件上传下载中不可忽视的部分。例如,限制文件大小以防止DoS攻击,检查文件类型以避免执行恶意脚本,以及使用缓存和流处理来减少内存消耗。 在提供的链接中...
本教程将深入讲解如何利用JSP和Servlet来实现大型文件的下载功能,这对于构建高效、稳定的Web应用至关重要。 一、Servlet简介 Servlet是Java平台上的一个标准接口,用于扩展服务器的功能。在Web开发中,Servlet通常...
Javabean中,创建一个方法获取指定文件的字节流,然后在JSP中通过请求转发或重定向到该方法,实现文件下载。 4. **读取文件内容**: 在Javabean中,我们可以创建一个方法打开并读取文件内容,然后将内容以字符串...
总结,JSP中的文件上传和下载可以通过使用第三方库如`jspSmartUpload.jar`来简化实现,同时注意安全性和性能优化,以确保Web应用的稳定和用户友好。通过以上步骤,开发者可以构建出健壮的文件管理功能,满足用户的...
在IT行业中,JSP(JavaServer Pages)是一种用于创建...通过分析这些文件,你可以进一步了解JSP文件下载的具体实现细节,以及如何与服务器的文件系统交互。记住,安全性和用户体验是设计下载功能时必须兼顾的重要因素。
本项目专注于使用JSP来实现文件的上传和下载功能,这对于Web应用程序来说是至关重要的,特别是那些需要处理用户数据交互的系统。 一、JSP上传文件 1. **表单设计**:在JSP页面中,我们需要创建一个HTML表单,包含`...