jsp下载文件的三种方法

发布时间:2020-05-10编辑:脚本学堂
分享几段js实现文件下载的代码,共三种方法,供大家学习参考下,有需要的朋友不要错过。

本节内容:
jsp实现文件下载

方法1,
 

复制代码 代码示例:
<% 
  response.setContentType("application/x-download");//设置为下载application/x-download 
  String filedownload = "/要下载的文件名";//即将下载的文件的相对路径 
  String filedisplay = "最终要显示给用户的保存文件名";//下载文件时显示的文件保存名称 
  String 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"); 
 
//application.getRealPath("/main/mvplayer/CapSetup.msi");获取的物理路径 
 
String filedownload = "想办法找到要提供下载的文件的物理路径+文件名"; 
 String filedisplay = "给用户提供的下载文件名"; 
  String filedisplay = URLEncoder.encode(filedisplay,"UTF-8"); 
  response.addHeader("Content-Disposition","attachment;filename=" + filedisplay); 
 
  java.io.OutputStream outp = null; 
  java.io.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(); 
//要加以下两句话,否则会报错 
//java.lang.IllegalStateException: getOutputStream() has already been called for //this response   
out.clear(); 
out = pageContext.pushBody(); 

  catch(Exception e) 
  { 
  System.out.println("Error!"); 
  e.printStackTrace(); 
  } 
  finally 
  { 
  if(in != null) 
  { 
  in.close(); 
  in = null; 
  } 
//这里不能关闭   
//if(outp != null) 
  //{ 
  //outp.close(); 
  //outp = null; 
  //} 
  } 
%> 
 

方法3,
 

复制代码 代码示例:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 
<a href="do_download.jsp?url=xxxxxx">点击下载 千千动听</a> 
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%> 
<%@page import="com.jspsmart.upload.SmartUpload"%> 
<% 
    SmartUpload su=new SmartUpload(); 
    su.initialize(pageContext); 
    su.setContentDisposition(null);//禁止浏览器打开文件 只能下载 
    su.downloadFile("upload/1.txt"); 
    //out.clear(); 
    //out=pageContext.pushBody(); 
 %>