struts实现文件下载

1、download.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>

 <a href="download.action?filename=20131021天津投资.doc">下载</a>

 2、

Struts.xml

<action name="download" class="DownloadAction">

  <param name="inputPath">/upload/</param>

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

  <!-- 将前台的编码格式转换为ISO8859-1 -->

  <param name="contentType">charset=ISO8859-1</param>

  <param name="inputName">targetFile</param>

  <!--filename是显示给用户看的文件名称-->

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

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

  </result>

  </action>

3、

import java.io.File;

import java.io.InputStream;

importjava.io.UnsupportedEncodingException;

 

importorg.apache.struts2.ServletActionContext;

 

importcom.opensymphony.xwork2.ActionContext;

importcom.opensymphony.xwork2.ActionSupport;

 

 

public class DownloadAction extendsActionSupport {

 

    privateString inputPath;

    privateString filename;

 

    publicString getFilename() {

          

       //与struts配置中的<paramname="contentDisposition">attachment;filename="${filename}"</param>相对应    

           try{

              returnnew String(filename.getBytes(), "ISO8859-1");

           }catch (UnsupportedEncodingException e) {

              //TODO Auto-generated catch block

              return  "文件下载出现错误";

           }

 

    }

 

    publicvoid setFilename(String fileName) {

       //将文件名的编码格式有ISO8859-1转换为gb2312,

       //ISO8859-1与struts配置的<param name="contentType">charset=ISO8859-1</param>对应

       //gb2312与前台的pageEncoding对应

       try{

           this.filename=  new String(fileName.getBytes("ISO8859-1"),"gb2312");

       }catch (UnsupportedEncodingException e) {

           //TODO Auto-generated catch block

           System.out.println("文件名错误");

       }

    }

    publicvoid setInputPath(String value){

       inputPath=value;

    }

    publicInputStream getTargetFile() throws Exception{

       ActionContextctx=ActionContext.getContext();

     System.out.println("-------------------------------------------------------------filename:"+filename);

       Stringfiletest="D:\\tomcat\\apache-tomcat-5.5.30\\webapps\\StrutsDemo\\upload\\"+filename;

       System.out.println(filetest);

       Filef=new File(filetest);

       if(f.exists())

           System.out.println("文件找到了");

       else

           System.out.println("文件没找到");

       returnServletActionContext.getServletContext().getResourceAsStream(inputPath+filename);

    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值