7

私は1つのアプリケーションを開発しています。このアプリケーションでは、必要なファイルをDBに記載されている場所からローカルにダウンロードします。サーバーからファイルをダウンロードするために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> 

そして、UIの開発にstruts2-jqueryを使用していることに言及するのを忘れました。私のプロジェクトの非常に重要な段階にあるので、これで私を助けてください。

4

2 に答える 2

14

私が正しければ、DBに保存されているファイルを渡したいと思います。その場合は、次のようなアクションクラスからすべてのパラメーターを渡すことで簡単にこれを行うことができます。

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でこのファイル名を使用する方法です。

于 2012-08-01T04:56:37.960 に答える
1

支柱の注釈についても同じです。解決策は非常に役に立ちました。ありがとうございました。私にとっての「contentType」はあまり違いはありませんでした。

@Action(value = "/download", results = { @Result(name = "success", type = "stream", 
params= {"contentType", "application/octet-stream", "inputName","fileInputStream",    
"contentDisposition","attachment; filename=\"${fileName}\"", "bufferSize", "1024" })
})
于 2013-06-24T08:44:35.210 に答える