SoftwareEngineering

引用元 http://kawamura-mark2.hatenablog.jp/entry/2015/11/11/125208

仕組みを理解したら、このページを消すこと!!

バイナリデータのリスト dataList = getDataList();

// 日本語ファイル名対応
String encodFile = URLEncoder.encode(this.fileName, "UTF-8");

// ヘッダー情報設定
response.setHeader("Content-Transfer-Encoding", "binary");
response.setHeader("Content-Type", "application/zip;charset=UTF-8");
response.setHeader("Content-disposition",
        "attachment; filename=\"" + encodFile + "\"; filename*=utf-8'ja'" + encodFile);

// ZIPファイルを書込む為の出力ストリームを、HTTPコンテンツ本体へのバイナリ出力として初期化する。
ZipOutputStream zipOutStream = new ZipOutputStream(response.getOutputStream());
zipOutStream.setEncoding("MS932");

// ファイル出力
try {
    // zip作成

    for (バイナリデータ imageRecord : バイナリデータのリスト) {

        // 取得イメージを、ZIP書込み

        ByteArrayOutputStream objBos;

        objBos = new ByteArrayOutputStream(imageRecord.getImegeInfo().length);
        objBos.write(imageRecord.getImegeInfo(), 0, imageRecord.getImegeInfo().length);
        objBos.close();

        // ZipOutputStreamにZipEntryを設定
        ZipEntry objZe = new ZipEntry(fileName);
        objZe.setMethod(ZipOutputStream.DEFLATED);
        zipOutStream.putNextEntry(objZe);

        // 取込イメージ情報を書込み
        byte[] aryByt = objBos.toByteArray();
        zipOutStream.write(aryByt, 0, aryByt.length);

        // ZipEntryのクローズ
        zipOutStream.closeEntry();

    }
    zipOutStream.close();

} catch (Exception e) {
    // エラー処理
} finally {
    if (zipOutStream != null) {
        zipOutStream.close();
    }
}

トップ   一覧 検索 最終更新   ヘルプ   最終更新のRSS