huikai1994
huikai1994
2015-12-14 10:45
采纳率: 50%
浏览 1.5k
已采纳

Struts2 文件下载显示的名称不是原名称

Action文件

public class DownloadAction extends ActionSupport {
    private static final long serialVersionUID = 6329383258366253255L;
    private String fileName;

    public void setFileName() {
        String fname = ServletActionContext.getRequest().getParameter("name");
        try {
            fname = new String(fname.getBytes("ISO-8859-1"), "UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        this.fileName = fname;
        System.out.println(fileName);
    }

    public String getFileName() throws UnsupportedEncodingException {

        fileName = new String(fileName.getBytes(), "ISO-8859-1");

        return fileName;
    }

    public InputStream getDownloadFile() {

        this.setFileName();
        return ServletActionContext.getServletContext().getResourceAsStream(
                "/download/file/" + fileName);
    }

    @Override
    public String execute() throws Exception {
        return SUCCESS;
    }
}

Jsp文件

<body>
    <%
    String ipath = request.getRealPath("/Files");
    File file = new File(ipath);
    File[] files = file.listFiles();
    for(int i=0;i<files.length;i++){
        String fname = files[i].getName();
        fname = java.net.URLEncoder.encode(fname,"utf-8");
        out.println(files[i].getName());
        out.println("<a href='Down.action?name="+fname+"'>"+files[i].getName()+"</a><br />"); 
    }
     %>
  </body> 

Struts.xml文件

 <action name="Down" class="action.DownAction">
            <result name="success" type="stream">
                <param name="contentDisposition">attachment;filename="${filename}"</param>
                <param name="inputName">downloadFile</param>
            </result>
</action>

图片说明

在下载时一直是Down.txt IE是down.action

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • weixin_29147833
    weixin_29147833 2015-12-14 10:56
    已采纳

    看看你的struts.xml里面,在result结果集里面的,名字为contentdisposition参数标签里面的文件名是否用了ognl表达式来动态获取文件名

    点赞 评论
  • weixin_29147833
    weixin_29147833 2015-12-14 11:29

    给后人也说下,ognl中的名字一定要与action中的属性名一致

    点赞 评论

相关推荐