文档章节

-JavaEE- javaEE中实现文件上传下载

季_苗
 季_苗
发布于 2016/09/18 11:27
字数 446
阅读 37
收藏 0

第一种方法:

jsp中实现文件下载的最简单的方式是在网页上做超级链接,如:<a href="music/abc.mp3">点击下载</a>。但是这样服务器上的目录资源会直接暴露给最终用户,会给网站带来一些不 安全的因素。

第二种方法:采用RequestDispatcher的方式进行

 jsp页面中添加如下代码:

  <%

      String filedownload = "/要下载的文件名";     //即将下载的文件的相对路径

      String filedisplay = "最终要显示给用户的保存文件名";       //下载文件时显示的文件保存名称

      filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8");

       response.setContentType("application/x-download");          //设置为下载application/x-download

      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

      {

    

      }

%>

注意:

1.String filenamedownload = "/Word/作文.doc";指的是即将下载的文件的相对路径,表示作文.doc文件放在工程下的Word文件夹内,一定要注意"/Word/作文.doc",Word前面一定要有“/”,不能写成String filenamedownload = "Word/作文.doc";

2.RequestDispatcher下载方式更为简单,但是缺点在于:下载的文件必须放在工程的内部,application.getRequestDispatcher()方法的参数也必须是相对路径。

 

 

 <%@page language="java" contentType="application/x-msdownload"    pageEncoding="gb2312"%>

<%

      //关于文件下载时采用文件流输出的方式处理:

      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;

          }

      }

%>

© 著作权归作者所有

季_苗
粉丝 1
博文 18
码字总数 16268
作品 0
南京
程序员
私信 提问
jsp上传文件fileupload

手把手教Jsp上传文件(FileUpload+Servlet) 本教程以Apache组织的commons项目中的FileUpload项目做为jsp的文件上传组件,FileUpload项目完全尊守RFC1867规范中 关于在HTTP request 中通过Post方...

功夫panda
2012/02/20
0
0
Servlet 3.0 新特性详解

简介: Servlet 是 Java EE 规范体系的重要组成部分,也是 Java 开发人员必须具备的基础技能,Servlet 3.0 是 Servlet 规范的最新版本。本文主要介绍了 Servlet 3.0 引入的若干重要新特性,包...

红薯
2010/04/23
1K
3
Servlet 3.0 新特性

Servlet 3.0 作为 Java EE 6 规范体系中一员,随着 Java EE 6 规范一起发布。该版本在前一版本(Servlet 2.5)的基础上提供了若干新特性用于简化 Web 应用的开发和部署。其中有几项特性的引入...

壹炮倾城
2013/06/13
0
1
Servlet 3.0 特性详解

Servlet 是 Java EE 规范体系的重要组成部分,也是 Java 开发人员必须具备的基础技能,本文主要介绍了 Servlet 3.0 引入的若干重要新特性,包括异步处理、新增的注解支持、可插性支持等等,为...

那位先生
2015/06/12
0
0
Servlet生命周期与工作原理

Servlet生命周期分为三个阶段:   1,初始化阶段 调用init()方法   2,响应客户请求阶段  调用service()方法   3,终止阶段  调用destroy()方法 Servlet初始化阶段:   在下列时...

№贪↗恋♂
2012/08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

idea运行spring boot(推荐)

下载idea 注册激活:http://idea.lanyus.com/ 照着网上的步骤创建spring boot,这里记录存在的坑 首先gradle需要在本地配置环境变量,配制成本地的,联网下载的话要很久很久 第一次不要使用g...

安卓工程师王恒
6分钟前
0
0
java final学习笔记

代码如下:class Circle{ double r; double pi=3.14; public Circle(double r) { this.r=r; } public void getArea() { System.out.......

hellation_
24分钟前
0
0
JavaConfig版

中心思想:去xml配置文件。 在Spirng Boot和Spring Cloud中,大量使用了注解与JavaConfig。 xml文件 对应的Java类 spring.xml SpringConfig.java spring-mvc.xml SpringMvcConfig.java web.x...

流小文
43分钟前
4
0
Go 定时器内部实现原理剖析

前言 前面我们介绍了一次性定时器Timer和周期性定时器Ticker,这两种定时器内部实现机制相同。创建定时器的协程并不负责计时,而是把任务交给系统协程,系统协程统一处理所有的定时器。 本节...

恋恋美食
48分钟前
0
0
分布式协调神器 ZooKeeper 之整体概述

ZooKeeper 最早起源于雅虎研究院的一个研究小组。当时,雅虎内部很多大型系统基本都需要依赖一个类似的系统来进行分布式协调,但是这些系统往往都存在分布式单点问题。所以,雅虎的开发人员就...

别打我会飞
49分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部