如何使用Struts 2下载localy文件

时间:2014-11-20 16:14:54

标签: java jsp servlets struts2

我想用我的struts应用程序下载xml文件。 我在JAVA中使用我的xml(在我的行动中)。当我点击链接时,下载窗口不会打开。 这是我的代码: 行动:

@Action(value = "download", results = {
            @Result(name = "success", type = "redirectAction", params = {
                    "actionName", "testMM"}),
            @Result(name = "input", location = "testMM.jsp") })
    public String dowload() {
        setFilePath(getSession().get("filePath", String.class));
        setFileName(getSession().get("fileName", String.class));

        try {
            fileInputStream = new FileInputStream("c://mm.xml");



        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return SUCCESS;
    }

/**
     * @return the fileInputStream
     */
    public InputStream getFileInputStream() {
        return fileInputStream;
    }

我的JSP:

<s:url id="fileDownload" namespace="/adminMM" action="download" ></s:url>
<s:a  style="width: 300px; maring: 15px 25px;" href="%{fileDownload}"><s:text name="%{resultFileName}" /></s:a>

我需要帮助。我可以给你更多的信息。

1 个答案:

答案 0 :(得分:0)

  1. 使用Struts2下载文件时,需要使用Stream result type

    @Action(value = "download", 
        results = {
            @Result(name = "success", type = "stream", params = {
                    "contentType"        , "text/xml",
                    "inputName"          , "fileInputStream",
                    "contentDisposition" , "attachment;filename=\"foobar.xml\""
            }),
            @Result(name = "input", location = "testMM.jsp") 
        }
    )
    
  2. 如果找不到文件,则返回ERROR,您只是打印堆栈跟踪并返回SUCCESS;

  3. 更正必须为dowload的{​​{1}}方法中的拼写错误。