struts2实现文件下载功能

文件下载是一个很常见的功能,用struts2实现文件下载的步骤:

一)、定义一个Action类,FileDownload.java

package com.struts2.filedownload;
import java.io.InputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport; 

//文件下载
public class FileDownload extends ActionSupport{ 

 private int number ; 

 private String fileName; 

 public int getNumber() {
  return number;
 } 

 public void setNumber(int number) {
  this.number = number;
 } 

 public String getFileName() {
  return fileName;
 } 

 public void setFileName(String fileName) {
  this.fileName = fileName;
 } 

 //返回一个输入流,作为一个客户端来说是一个输入流,但对于服务器端是一个 输出流
 public InputStream getDownloadFile() throws Exception
 {
  if(1 == number)
  {
   this.fileName = "Dream.jpg" ;
   //获取资源路径
   return ServletActionContext.getServletContext().getResourceAsStream("upload/Dream.jpg") ;
  } 

  else if(2 == number)
  {
   this.fileName = "jd2chm源码生成chm格式文档.rar" ;
   //解解乱码
   this.fileName = new String(this.fileName.getBytes("GBK"),"ISO-8859-1");
   return ServletActionContext.getServletContext().getResourceAsStream("upload/jd2chm源码生成chm格式文档.rar") ;
  }
  else
   return null ;
 } 

 @Override
 public String execute() throws Exception { 

  return SUCCESS;
 } 

}

二)、在struts.xml文件中配置相关信息

<struts>
 <package name="struts2" extends="struts-default">
  <action name="FileDownload" class="com.struts2.filedownload.FileDownload">
   <result name="success" type="stream">
    <param name="contentType">text/plain</param>
    <param name="contentDisposition">attachment;fileName="${fileName}"</param>
    <param name="inputName">downloadFile</param>
    <param name="bufferSize">1024</param>
   </result>
  </action> 

 </package> 

</struts>

1.结果类型必须要写成 type="stream"  ,与之对应的处理类是 org.apache.struts2.dispatcher.StreamResult

2.涉及到的参数:

3.

1)  <param name="contentDisposition">attachment;fileName="${fileName}"</param>
     contentDisposition默认是 inline(内联的), 比如说下载的文件是文本类型的,就直接在网页上打开,不能直接打开的才会打开下载框自己选择
2)  attachment :下载时会打开下载框
3)  fileName="${fileName}" :在这定义的名字是一个动态的,该名字是显示在下载框上的文件名字

4. <param name="inputName">downloadFile</param> ,这个downloadFile名字要和FileDownload.java类中的getDownloadFile()方法名去掉get 一致

三)用于显示下载的链接界面 filedownload.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 <base href="<%=basePath%>" rel="external nofollow" > 

 <title>My JSP 'filedownload.jsp' starting page</title> 

 <meta http-equiv="pragma" content="no-cache">
 <meta http-equiv="cache-control" content="no-cache">
 <meta http-equiv="expires" content="0">
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
 <meta http-equiv="description" content="This is my page">
 <!--
 <link rel="stylesheet" type="text/css" href="styles.css" rel="external nofollow" >
 --> 

 </head> 

 <body> 

 <h2>文件下载内容:</h2><br/>
 Dream.jpg:<a href="FileDownload.action?number=1" rel="external nofollow" >点击下载</a><br/>
 jd2chm源码生成chm格式文档.rar:<a href="FileDownload.action?number=2" rel="external nofollow" >点击下载2</a> 

 </body>
</html> 

文件上传链接:
1)Servlet 文件上传: 点击打开链接
2)Struts2 文件上传:点击打开链接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • JavaWeb利用struts实现文件下载时改变文件名称

    先看看效果图: package com.fenghuo.struts.download; import java.net.URLEncoder; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.

  • Java Web端程序实现文件下载的方法分享

    Web文件下载有两种,一种是文件在网站目录下,在浏览器中直接输入文件路径即可下载,如http://www.xxx.com/file.zip.另外一种是文件不在网站目录下或者文件是动态生成的(导出报表或者导出excel等),这种情况需要通过response的OutputStream实现文件的下载.DownloadUtils是一个Java Web文件下载工具类,提供多种静态方法实现文件下载. package com.rhui.util; import java.io.BufferedInputStr

  • Java Web实现文件下载和乱码处理方法

    文件上传和下载是web开发中常遇到的问题,这几天在做一个项目又用到了文件下载,之前也零零散散记了些笔记,今天来做一下整理.文件上传还有待进一步测试,这里先说一下文件下载. 一.文件下载处理流程 文件下载处理流程其实很清晰,即: 1.根据文件名或者文件路径定位文件,具体的策略主要根据自己的需求,总之需要系统能找到的文件全路径. 2.获取输入流,从目标文件获取输入流. 3.获取输出流,从response中获取输出流. 4.从输入流读入文件,通过输出流输出文件.这是真正的下载执行过程. 5.关闭IO流

  • java实现FTP文件上传与文件下载

    本文实例为大家分享了两种java实现FTP文件上传下载的方式,供大家参考,具体内容如下 第一种方式: package com.cloudpower.util; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import sun.net.TelnetInputStream; import sun.net.TelnetO

  • Java Web项目中实现文件下载功能的实例教程

    需求:实现一个具有文件下载功能的网页,主要下载压缩包和图片 两种实现方法: 一:通过超链接实现下载 在HTML网页中,通过超链接链接到要下载的文件的地址 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>通过链接下载文件&

  • JavaEE实现文件下载

    我们先来看一个最简单的文件下载的例子: 复制代码 代码如下: package com.yyz.response;  import java.io.FileInputStream;  import java.io.IOException;  import java.io.OutputStream;  import javax.servlet.ServletException;  import javax.servlet.http.HttpServlet;  import javax.servlet

  • java使用http实现文件下载学习示例

    复制代码 代码如下: package com.hongyuan.test; import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import

  • Struts2实现文件下载功能代码分享(文件名中文转码)

    struts2文件下载功能实现代码如下所示: Action文件 public class DownLoadAction extends ActionSupport { /** * */ private static final long serialVersionUID = 5879762231742395104L; private String fileName;//用户请求的文件名 private String inputPath;//下载资源的路径(在struts配置文件中设置) publ

  • 详解Java文件下载的几种实现方式

    Java文件下载的几种方式,具体如下: public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径. File file = new File(path); // 取得文件名. String filename = file.getName(); // 取得文件的后缀名. String ext = filename.substring(filena

  • java实现适用于安卓的文件下载线程类

    代码非常简单实用,这里就不多废话了,直接奉上源码 package android.mooc.tools; import java.io.BufferedInputStream; import java.io.File; import java.io.RandomAccessFile; import java.net.URL; import java.net.URLConnection; import android.util.Log; public class FileDownloadThrea

随机推荐