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

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 2015-12-14 10:56
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题