当前位置: 首页 > 知识库问答 >
问题:

Struts2下载-如何动态配置文件名?

陆正奇
2023-03-14

我正在开发一个应用程序,在那里人们将从数据库中提到的一个位置下载所需的文件到他们的本地。我使用Struts2从服务器下载文件。我可以下载的文件没有任何例外,它的工作完美。但是要下载的文件具有我在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> 

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

共有2个答案

汤枫涟
2023-03-14

对于struts中的注释,它是相同的。这个解决办法很有帮助。谢谢.“ContentType”对我来说没有太大的区别。

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

如果我是正确的,您想要传递存储在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> 

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

 类似资料:
  • 主要内容:web.xml 文件:,struts.xml 文件:,struts-config.xml 文件:,struts.properties 文件本章将带你通过一个Struts2应用程序所需的基本配置。在这里,我们将看到在一些重要的配置文件,将配置文件:web.xml ,struts.xml,struts-config.xml和struts.properties 使用web.xml和struts.xml的配置文件,并在前面的章节中,已经看到我们的例子中曾使用这两个文件,让我解释以及其他文件。

  • 主要内容:1. Action,2. 视图文件,3. struts.xml,4. 执行结果,参考这是一个Struts2的例子来说明使用定制返回类型,允许用户下载文件。web工程的文件夹结构如下所示: 1. Action 在Action类中,声明一个 InputStream 的数据类型和getter方法。 DownloadAction.java 2. 视图文件 一个正常的页面,有一个下载链接,用于下载文件。 downloadPage.jsp 3. struts.xml 定义下载文件的细节。 <

  • 问题内容: 我有以下代码: 它不起作用。我给了两个按钮,如果按下第一个,则应该加载。如果第二个被按下,则应加载。 我怎样才能做到这一点? 问题答案: 您不能以这种方式将HTML嵌入Javascript。基本上,您想要的是嵌入一个脚本元素,单击按钮时指向某个javascript文件。可以通过将事件与DOM结合来完成:

  • 问题内容: windows下如何配置 python pip配置文件? 问题答案: 在c:\Users\当前用户\pip目录下面创建一个pip.ini配置文件,例如,配置pip豆瓣源 配置完成后,将pip.ini文件配置到环境变量。

  • 在Web服务器上实现文件下载功能很容易。只要将URL指向要下载的文件即可。但是这要有一个前提,就是要下载的文件必须位于在Web服务器中部署的Web目录中。但有时需要在下载文件之前做一些其他的事,如验证用户是否有权限下载该文件。在这种情况下,就必须通过动态下载的方式(也就是通过程序来读取待下载的文件,而不是直接由Web服务器负责下载)来实现。 下面的例子演示了如何通过Servlet实现动态下载文件的

  • 问题内容: 问题-设置Firefox配置文件后,Firefox在下载CSV文件时一直询问下载位置。请帮忙。 问题答案: 我看不到您的代码中的任何重大问题。但是,当你的等级不记得添加所有相关的CSV类型的文件在此提到的网站。 这是您自己的代码块,其中添加了一些简单的调整: 我已经在此站点和Microsoft 网站上验证了我的代码,并且在我看来效果很好。