`
chenyunhong
  • 浏览: 140980 次
  • 性别: Icon_minigender_1
  • 来自: 真的不知道
社区版块
存档分类
最新评论

用Jsp来实现文件下载功能的几种方式

    博客分类:
  • Web
阅读更多
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来发送流和读取流。以及把文件转换成流或把流转换成文件的操作。
分享到:
评论
1 楼 ws715 2009-02-19  
outputStream.flush();

outputStream.close();

用了flush刷新以后就已经可以了,不用关闭.关闭后下载下来的图片下面一截会丢失.

相关推荐

    jsp页面实现文件的下载功能

    在这个场景下,我们关注的是如何在JSP页面中实现文件的下载功能。这个功能在很多网站上都常见,例如提供文档、软件或其他资源的下载服务。下面我们将详细探讨如何实现这一功能。 首先,为了创建一个下载链接,你...

    jsp实现文件上传下载功能

    本文将详细介绍如何使用 JSP 和 SmartUpload 库来实现文件的上传和下载功能。 #### 二、SmartUpload简介 SmartUpload 是一个用于处理文件上传的强大 Java 类库,它可以极大地简化文件上传过程中的复杂性。它提供了...

    jsp+servlet实现大型文件下载

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

    jsp 实现文件上传

    在 do_upload.jsp 文件中,我们使用了 Java 语言来实现文件上传功能。首先,我们使用了 File 类来创建一个文件对象,该文件对象用于存储上传的文件。然后,我们使用了 FileOutputStream 类来将上传的文件写入到...

    jsp页面下载文件

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

    jsp实现文件上传功能组件

    在本教程中,我们将探讨如何利用JSP和Servlet来实现文件上传的功能,特别是在使用smartUpload组件的基础上进行封装,以提供更简洁易用的API。 首先,了解文件上传的基本原理。在Web应用中,文件上传通常涉及HTTP...

    JSP文件在线预览

    在IT行业中,JSP(JavaServer Pages)是一种用于创建动态网页的技术,它允许开发者使用Java语言来编写网页内容。本文将深入探讨“JSP文件在线预览”这一主题,涵盖其核心概念、实现原理以及相关的技术栈。 首先,...

    文件上传及下载功能实现代码

    以上就是使用JSP实现文件上传和下载功能的主要步骤和知识点,结合Struts框架可以进一步提高代码的可维护性和扩展性。在实际开发中,还需要考虑性能优化、用户体验等因素,以提供稳定、高效的服务。

    JSP下载文件源代码

    根据给定的信息,本文将详细解释如何使用JSP与SmartUpload插件来实现文件下载功能。这主要包括以下几个方面的内容:理解JSP与SmartUpload的基本概念、解析提供的代码示例、以及深入探讨SmartUpload中的关键方法。 #...

    jsp 下载服务器上文件的超简单网页全套源码

    【标题】"jsp 下载服务器上文件的超简单网页全套源码" 提供了一种简易的方法,让初学者能够理解并实现使用JSP技术在Web服务器上实现文件下载功能。这个源码包可能是针对那些刚接触Java Web开发,对JSP、Servlet有...

    JSP多文件上传(同时上传)

    实现JSP多文件上传,我们需要了解以下几个关键知识点: 1. **HTML表单与多文件选择**: 在HTML中,`&lt;input type="file"&gt;`标签用于创建一个文件输入框,用户可以通过它选择文件。要支持多文件上传,需要设置`...

    JSP同时选择多文件上传MultifileUploadDemo

    "MultifileUploadDemo"是一个很好的学习资源,它展示了如何结合Flash和JSP实现多文件上传功能。通过深入研究这个示例,开发者可以掌握如何处理复杂的文件上传需求,提高Web应用的功能性和用户体验。同时,随着HTML5...

    jsp分页技术和文件上传与下载,包括jspsmartupload.jar

    本文将深入探讨这两个主题,以及如何利用jspsmartupload.jar库实现文件上传。 **一、JSP分页技术** JSP分页技术主要用于处理大数据量的展示,提高页面加载速度和用户体验。常见的分页方法有以下几种: 1. **基于...

    文件上传,jsp限定后缀名的文件上传功能

    本节将深入探讨如何在JSP中实现一个限定后缀名的文件上传功能。 首先,我们需要了解JSP的基本原理。JSP是一种动态网页技术,它结合了HTML和Java代码,使得开发者可以在页面上嵌入Java逻辑。在文件上传场景下,我们...

    文件的上传和下载(JSP+Mysql)

    在本文中,我们将深入探讨如何使用Java服务器页面(JSP)和MySQL数据库来实现文件的上传和下载功能。首先,我们需要理解JSP和MySQL的基本概念,然后我们会详细讲解实现这个功能所需的技术步骤。 **JSP(JavaServer ...

    jsp实现同步数据功能java

    在本项目中,"jsp实现同步数据功能java"是核心目标,即通过JSP来实现在前台点击后启动后台的数据同步,并在完成同步后跳转到新的页面展示结果。 首先,我们需要理解"提示"的概念。在用户界面设计中,提示通常指的是...

    jsp上传下载文件源代码,通过struts.xml控制在100M以内

    总之,这个项目是关于如何在Java Web环境中使用JSP和Struts2框架实现文件上传和下载功能的实例,同时也展示了如何通过Struts配置限制文件大小,以防止过大文件导致的服务器资源占用过高。通过对这些技术的深入理解和...

    java+jsp实现上传下载对话框

    在IT行业中,构建一个能够...通过这个项目,我们可以学习到如何使用Java和JSP实现Web应用中的文件上传和下载功能,以及如何借助第三方库优化这一过程。这些技能对于任何涉及文件交互的Web开发者来说都是非常宝贵的。

Global site tag (gtag.js) - Google Analytics