Struts 2 Download - 如何动态配置文件名?

Esh*_*Esh 6 java jquery struts2 struts-validation struts-config

我正在开发一个应用程序,人们将所需的文件从DB中提到的位置下载到本地.我使用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> 
Run Code Online (Sandbox Code Playgroud)

我忘了提到使用struts2-jquery来开发UI.请帮我解决这个问题,因为我处于项目的关键阶段.

Ume*_*thi 13

如果我是正确的你想要传递存储在你的数据库中的文件,如果是这种情况你可以通过从你的动作类传递所有这些参数来轻松地做到这一点

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> 
Run Code Online (Sandbox Code Playgroud)

您可以在struts.xml类中动态传递每个参数.希望这对您有所帮助.这就是在XML中使用此文件名的方法