サーバー側で標準サーブレット (拡張HttpServlet
ではなくRemoteServiceServlet
) を作成し、クライアント側で id をサーブレット パラメータとして送信することができます。
リクエストを取得したら、Excel ファイルを作成してクライアントに送信する必要があります。ブラウザにダウンロード ダイアログ ボックスが自動的にポップアップ表示されます。ただし、正しい content-type 応答ヘッダーを設定していることを確認する必要があります。このヘッダーは、ファイルの種類をブラウザに指示します。
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String fileId = reguest.getParameter("fileId"); // value of file id from request
File file = CreatorExel.getFile(fileId); // your method to create file from helper class
// setting response headers
response.setHeader("Content-Type", getServletContext().getMimeType(file.getName()));
response.setHeader("Content-Length", file.length());
response.setHeader("Content-Disposition", "inline; filename=\"" + file.getName() + "\"");
BufferedInputStream input = null;
BufferedOutputStream output = null;
try {
InputStream inputStream = new FileInputStream(file);
ServletOutputStream outputStream = response.getOutputStream();
input = new BufferedInputStream(fileInput);
output = new BufferedOutputStream(outputStream);
int count;
byte[] buffer = new byte[8192]; // buffer size is 512*16
while ((count = input.read(buffer)) > 0) {
output.write(buffer, 0, count);
}
} finally {
if (output != null) {
try {
output.close();
} catch (IOException ex) {
}
}
if (input != null) {
try {
input.close();
} catch (IOException ex) {
}
}
}