2

クリックするとCSVファイルをダウンロードするWebアプリケーションにボタンを追加しようとしています(これは非常に小さく、サイズはわずか約4KBです)。

ボタンはすでに作成されており、リスナーがアタッチされています。ファイルも用意されています。ここで行う必要があるのは、ボタンがクリックされたときに csv ファイルをダウンロードする実際のイベントを作成することだけです。

「ファイル」(ファイルタイプ)が使用しているcsvファイルの名前であり、準備ができていると仮定すると、これは私がこれまでに持っている方法です:

public void downloadCSV(HttpServletRequest _request, HttpServletResponse _response, LogFileDetailCommand cmd) throws Exception {
     ServletOutputStream outStream = _response.getOutputStream();
     _response.setContentType("text/csv");  
     _response.setHeader("Content-Disposition", "attachment; filename=data.csv");
}

ファイルを ServletOutputStream に書き込む部分が欠落していることに気付きましたが、これは私が立ち往生している部分です。クラス ServletOutputStream はクラス OutputStream ( http://docs.oracle.com/javaee/5/api/javax/servlet/ServletOutputStream.html ) を拡張することを知っているため、「書き込み」メソッドを継承しているため、理想的な世界では単純に「outStream.write(file);」と言いたいのですが、これらの「write」メソッドにはパラメータとして byte、byte[]、int しかないため、それを行うことはできません。それらにファイルを渡します。

ファイルを outStream に渡すにはどうすればよいですか?

(余談: これを「_response.setContentLength();」に追加する必要がありますか? もしそうなら、どのパラメータを入れるべきですか?)

Ps outStream を使い終わったら、それをフラッシュしたり閉じたりする必要があることを知っています。

4

1 に答える 1