天天看点

struts2 下载

struts2 下载

struts.xml

<?xml version="1.0" encoding="utf-8" ?>

<!doctype struts public

    "-//apache software foundation//dtd struts configuration 2.0//en"

    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <constant name="struts.multipart.maxsize" value="10701096"/>

    <constant name="struts.devmode" value="true" />

  <package name="lhy" namespace="/lhy" extends="struts-default">

<action name="download" class="action.filedownload" method="download">

<!-- 

        (1)  <param name="contentdisposition">attachment;filename="${filename}"</param>

                      contentdisposition默认是 inline(内联的), 比如说下载的文件是文本类型的,

                                                         就直接在网页上打开,不能直接打开的才会打开下载框自己选择

                 (2)<param name="contentdisposition">attachment;filename="${filename}"</param>

                     attachment :下载时会打开下载框

                      filename="${filename}" :在这定义的名字是一个动态的,在value stack中

                  (3) <param name="inputname">lhydownload</param>,这个downloadfile名字要和

                       filedownload.java类中的getlhydownload()方法名去掉get 一致

         (4)buffersize

下载缓冲区的大小

-->

<result type="stream" name="download">

<param name="contenttype">application/octet-stream</param>

<!-- 要有相对应的getdownloadfile()方法返回值是 inputstream -->

<param name="inputname">lhydownload</param>

<param name="contentdisposition">attachment;filename="${filename}"</param>

<param name="buffersize">4096</param>

</result>

</action>

</package>

</struts>

filedownload.java

package action;

import java.io.fileinputstream;

import java.io.filenotfoundexception;

import java.io.inputstream;

import org.apache.struts2.servletactioncontext;

import com.opensymphony.xwork2.actionsupport;

public class filedownload extends actionsupport{

private string filename;

public string download()

{

//此方法不尽兴任何操作,只有返回值

return "download";

}

public inputstream getlhydownload()

//声明输入流 

inputstream is = null;

string filepath=servletactioncontext.getservletcontext().getrealpath("/upload");

system.out.println(filepath);

system.out.println(filename);

try {

is = new fileinputstream(filepath+"/"+filename);

} catch (filenotfoundexception e) {

e.printstacktrace();

system.out.println(is);

return is;

public string getfilename() {

return filename;

public void setfilename(string filename) {

this.filename = filename;

jsp

<a