Java Struts 2下载-如何动态配置文件名?

Java Struts 2下载-如何动态配置文件名?,java,jquery,struts2,struts-config,struts-validation,Java,Jquery,Struts2,Struts Config,Struts Validation,我正在开发一个应用程序,人们将从数据库中提到的位置将所需文件下载到本地。我使用struts 2从服务器下载文件。我可以毫无例外地下载这个文件,它工作得非常好。 但是我下载的文件具有我在struts.xml中指定的文件名,我希望它是我下载的确切文件名。例如,如果原始文件名是struts.pdf,我将以download.pdf的形式下载它,如何防止它并下载具有实际文件名的文件 我的struts.xml配置如下: <action name="download" class="action.Dow

我正在开发一个应用程序,人们将从数据库中提到的位置将所需文件下载到本地。我使用struts 2从服务器下载文件。我可以毫无例外地下载这个文件,它工作得非常好。 但是我下载的文件具有我在struts.xml中指定的文件名,我希望它是我下载的确切文件名。例如,如果原始文件名是struts.pdf,我将以download.pdf的形式下载它,如何防止它并下载具有实际文件名的文件

我的struts.xml配置如下:

<action name="download" class="action.DownloadAction">
        <result name="success" type="stream">
            <param name="contentType">application/octet-stream</param>
            <param name="inputName">fileInputStream</param>
            <param name="contentDisposition">attachment;filename="download.log"</param>
            <param name="bufferSize">1024</param>
        </result>
        <result name="error">/live/useradminerror.jsp</result>
    </action> 

应用程序/八位字节流
文件输入流
附件filename=“download.log”
1024
/live/useradminerror.jsp

我忘了提到我正在使用struts2 jquery开发UI。请在这方面帮助我,因为我正处于项目的关键阶段

如果我是正确的,您希望传递存储在DB中的文件,如果是这种情况,您可以通过从action类中传递所有这些参数来轻松实现这一点,如

class MyFileDownloadAction extends ActionSupport{

     private String fileName;
     // getter and setter

    public String fileDownload() throws exception{
      // file download logic
      fileName ="abc"  // can set name dynamic from DB
   }

}

<action name="download" class="action.DownloadAction">
        <result name="success" type="stream">
            <param name="contentType">application/octet-stream</param>
            <param name="inputName">fileInputStream</param>
            <param name="contentDisposition">attachment;filename="${filename}"</param>
            <param name="bufferSize">1024</param>
        </result>
        <result name="error">/live/useradminerror.jsp</result>
    </action> 
类MyFileDownloadAction扩展了ActionSupport{
私有字符串文件名;
//接二连三
公共字符串fileDownload()引发异常{
//文件下载逻辑
fileName=“abc”//可以从数据库设置动态名称
}
}
应用程序/八位字节流
文件输入流
附件filename=“${filename}”
1024
/live/useradminerror.jsp
您可以在struts.xml类中动态传递每个参数。希望这对您有所帮助
这就是您将如何在XML中使用此文件名来在struts中进行注释的方法,也是一样的。这个解决方案非常有用。非常感谢。“内容类型”对我来说没有多大区别

@Action(value = "/download", results = { @Result(name = "success", type = "stream", 
params= {"contentType", "application/octet-stream", "inputName","fileInputStream",    
"contentDisposition","attachment; filename=\"${fileName}\"", "bufferSize", "1024" })
})

感谢您的回复,它会下载与数据库中完全相同的名称吗。是的,它会下载,因为在本例中,您是在运行时从操作类传递文件名谢谢您Umesh,我可以下载实际的文件filename@UmeshAwasthi+1很好的解决方案。只是一个提示:contentDisposition在chrom中不起作用,opera也使用contentDisposition!