1.最直接最简单的,方式是把文件地址直接放到html页面的一个链接中。这样做的缺点是把文件在服务器上的路径暴露了,并且还无法对文件下载进行其它的控制(如权限)。这个就不写示例了。
2.在服务器端把文件转换成输出流,写入到response,以response把文件带到浏览器,由浏览器来提示用户是否愿意保存文件到本地。(示例如下)
<%
response.setContentType(fileminitype);
response.setHeader("Location",filename);
response.setHeader("Cache-Control", "max-age=" + cacheTime);
//filename应该是编码后的(utf-8)
response.setHeader("Content-Disposition", "attachment; filename=" + filename);
response.setContentLength(filelength);
OutputStream outputStream = response.getOutputStream();
InputStream inputStream = new FileInputStream(filepath);
byte[] buffer = new byte[1024];
int i = -1;
while ((i = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, i);
}
outputStream.flush();
outputStream.close();
inputStream.close();
outputStream = null;
%>
3.既然是JSP的话,还有一种方式就是用Applet来实现文件的下载。不过客户首先得信任你的这个Applet小程序,由这个程序来接受由servlet发送来的数据流,并写入到本地。
servlet端示例
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType(" text/plain ");
OutputStream outputStream = null;
try {
outputStream = res.getOutputStream();
//把文件路径为srcFile的文件写入outputStream中
popFile(srcFile, outputStream)) ;
} catch (IOException e) {
e.printStackTrace();
}
}
JApplet端示例
URLConnection con;
try {
//url是被调用的SERVLET的网址 如 *.do
con = url.openConnection();
con.setUseCaches(false);
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestProperty("Content-Type",
"application/octet-stream");
InputStream in = con.getInputStream();
ProgressMonitorInputStream pmInputStream = new ProgressMonitorInputStream
(pane, "正在从服务器下载文件内容", in);
ProgressMonitor pMonitor = pmInputStream.getProgressMonitor();
pMonitor.setMillisToDecideToPopup(3);
pMonitor.setMillisToPopup(3);
//localfilepath本地路径,localstr文件文件夹,filename本地文件名
String localfilepath = localstr + filename ;
//方法saveFilsaveFilee是把输入流pmInputStream写到文件localfilepath中
if(saveFilsaveFilee(localfilepath,pmInputStream)){
openLocalFile(localfilepath);
}
4.顺便把JApplet上传文件的代码也贴上来.
JApplet端示例
URLConnection con;
try {
con = url.openConnection();
//url是被调用的SERVLET的网址 如 *.do
con.setUseCaches(false);
con.setDoInput(true);
con.setDoOutput(true);
con.setRequestProperty("Content-Type","application/octet-stream");
OutputStream out = con.getOutputStream();
//localfilepath本地路径,localstr文件文件夹,filename本地文件名
String localfilepath = localstr + filename;
//文件getOutputStream是把文件localfilepath写到输出流out中
getOutputStream(localfilepath,out);
InputStream in = con.getInputStream();
return true;
}catch (IOException e) {
System.out.println("文件上传出错!");
e.printStackTrace();
}
servlet端代码示例
public void service(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
res.setContentType(" text/plain ");
InputStream inputStream = null;
try {
inputStream = res.getInputStream();
//把输入流inputStream保存到文件路径为srcFile的文件中
writefile(srcFile, inputStream);
} catch (IOException e) {
e.printStackTrace();
}
} // end service
总结:在文件的传输中是流的形式存在的,在硬盘上是文件的形式存在的。我们要做的只是通过HttpServletRequest和HttpServletResponse,或者是response和request来发送流和读取流。以及把文件转换成流或把流转换成文件的操作。
分享到:
相关推荐
在这个场景下,我们关注的是如何在JSP页面中实现文件的下载功能。这个功能在很多网站上都常见,例如提供文档、软件或其他资源的下载服务。下面我们将详细探讨如何实现这一功能。 首先,为了创建一个下载链接,你...
本文将详细介绍如何使用 JSP 和 SmartUpload 库来实现文件的上传和下载功能。 #### 二、SmartUpload简介 SmartUpload 是一个用于处理文件上传的强大 Java 类库,它可以极大地简化文件上传过程中的复杂性。它提供了...
本教程将深入讲解如何利用JSP和Servlet来实现大型文件的下载功能,这对于构建高效、稳定的Web应用至关重要。 一、Servlet简介 Servlet是Java平台上的一个标准接口,用于扩展服务器的功能。在Web开发中,Servlet通常...
在 do_upload.jsp 文件中,我们使用了 Java 语言来实现文件上传功能。首先,我们使用了 File 类来创建一个文件对象,该文件对象用于存储上传的文件。然后,我们使用了 FileOutputStream 类来将上传的文件写入到...
本话题关注的是如何在JSP页面上实现文件下载功能,这对于构建一个交互性强、功能丰富的Web应用是至关重要的。以下我们将详细探讨这个主题。 首先,我们需要理解JSP页面的基本结构和工作原理。JSP页面由HTML、CSS、...
在本教程中,我们将探讨如何利用JSP和Servlet来实现文件上传的功能,特别是在使用smartUpload组件的基础上进行封装,以提供更简洁易用的API。 首先,了解文件上传的基本原理。在Web应用中,文件上传通常涉及HTTP...
在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,它允许开发者使用Java语言来编写网页内容。本文将深入探讨“JSP文件在线预览”这一主题,涵盖其核心概念、实现原理以及相关的技术栈。 首先,...
以上就是使用JSP实现文件上传和下载功能的主要步骤和知识点,结合Struts框架可以进一步提高代码的可维护性和扩展性。在实际开发中,还需要考虑性能优化、用户体验等因素,以提供稳定、高效的服务。
根据给定的信息,本文将详细解释如何使用JSP与SmartUpload插件来实现文件下载功能。这主要包括以下几个方面的内容:理解JSP与SmartUpload的基本概念、解析提供的代码示例、以及深入探讨SmartUpload中的关键方法。 #...
【标题】"jsp 下载服务器上文件的超简单网页全套源码" 提供了一种简易的方法,让初学者能够理解并实现使用JSP技术在Web服务器上实现文件下载功能。这个源码包可能是针对那些刚接触Java Web开发,对JSP、Servlet有...
实现JSP多文件上传,我们需要了解以下几个关键知识点: 1. **HTML表单与多文件选择**: 在HTML中,`<input type="file">`标签用于创建一个文件输入框,用户可以通过它选择文件。要支持多文件上传,需要设置`...
"MultifileUploadDemo"是一个很好的学习资源,它展示了如何结合Flash和JSP实现多文件上传功能。通过深入研究这个示例,开发者可以掌握如何处理复杂的文件上传需求,提高Web应用的功能性和用户体验。同时,随着HTML5...
本文将深入探讨这两个主题,以及如何利用jspsmartupload.jar库实现文件上传。 **一、JSP分页技术** JSP分页技术主要用于处理大数据量的展示,提高页面加载速度和用户体验。常见的分页方法有以下几种: 1. **基于...
本节将深入探讨如何在JSP中实现一个限定后缀名的文件上传功能。 首先,我们需要了解JSP的基本原理。JSP是一种动态网页技术,它结合了HTML和Java代码,使得开发者可以在页面上嵌入Java逻辑。在文件上传场景下,我们...
在本文中,我们将深入探讨如何使用Java服务器页面(JSP)和MySQL数据库来实现文件的上传和下载功能。首先,我们需要理解JSP和MySQL的基本概念,然后我们会详细讲解实现这个功能所需的技术步骤。 **JSP(JavaServer ...
在本项目中,"jsp实现同步数据功能java"是核心目标,即通过JSP来实现在前台点击后启动后台的数据同步,并在完成同步后跳转到新的页面展示结果。 首先,我们需要理解"提示"的概念。在用户界面设计中,提示通常指的是...
总之,这个项目是关于如何在Java Web环境中使用JSP和Struts2框架实现文件上传和下载功能的实例,同时也展示了如何通过Struts配置限制文件大小,以防止过大文件导致的服务器资源占用过高。通过对这些技术的深入理解和...
在IT行业中,构建一个能够...通过这个项目,我们可以学习到如何使用Java和JSP实现Web应用中的文件上传和下载功能,以及如何借助第三方库优化这一过程。这些技能对于任何涉及文件交互的Web开发者来说都是非常宝贵的。