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条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!