最近、このプロジェクトは、一連の写真は、私は短い、非常に感謝して、誰が兄弟のブログを呼んで学ぶ覚えていない達成するための方法を共有する方法には、オンラインの一般的な方法のいくつかの上に描画、パッケージのニーズをダウンロードする必要が発生しました、それは、ダウンロードするための基本的な機能のパッケージに入っています。
1.controllerレベルのコード:
/ **
*画像圧縮梱包
* /
@RequestMapping(値= "/ zipファイル")
公共ボイドcompressionFile(HttpServletRequestのリクエスト、HttpServletResponseの応答文字列busiIdは){例外をスロー
//ビジネスコード、フロントデスクに応じてリソーステーブルピクチャリストにクエリIDを来ました
SubMetaData subMetaData = subMetaDataService.findByBusiId(busiId)。
もし(subMetaData!= NULL){
一覧<SubMetaDataAtt>リスト= subMetaDataAttService.findByDataId(subMetaData.getDataId());
IF(はlist.size()> 0){
subMetaDataAttService.downloadAllFile(要求、応答、リスト)。
}
}
}
2.service層の一般的なファイルのダウンロードパッケージ
/ **
*複数のファイル圧縮パッケージ、ファイル名をダウンロードした後、ゴミ問題を解決するために
*
* /
公共のボイドdownloadAllFile(HttpServletRequestのリクエスト、HttpServletResponseの応答、リスト<SubMetaDataAtt>リスト)にUnsupportedEncodingExceptionをスロー{
ストリングdownloadName =「添付画像が.zipファイル」。
文字列のuserAgent = request.getHeader( "のUser-Agent");
//コアブラウザとしてIEまたはIEのために:
IF(userAgent.contains( "MSIE")|| userAgent.contains( "トライデント")){
downloadName = java.net.URLEncoder.encode(downloadName、 "UTF-8");
}他{
// IE以外のブラウザを処理します。
downloadName =新しい文字列(downloadName.getBytes( "UTF-8")、 "ISO-8859-1");
}
//上記のプロセス名の後のファイル名をダウンロードした後、ゴミ問題を解決するために
response.setContentType(「マルチパート/フォームデータ」)。
response.setCharacterEncoding( "UTF-8");
response.setHeader( "コンテンツ・処分"、String.Formatの( "添付ファイル;ファイル名= \" %s \ "は"、downloadName));
//response.setHeader("Content-Disposition」、 "添付; fileNameに=" + downloadName)。
OutputStreamのOutputStream = NULL;
ZipOutputStream ZOS = NULL;
{試します
出力ストリーム= response.getOutputStream()。
ZOS =新しいZipOutputStream(OutputStreamの);
//ストリーム書き込みzipファイルは、以下の方法が掲載します
downloadTolocal(ZOS、リスト)。
}キャッチ(IOExceptionを電子){
logger.error(E、 "downloadAllFile-ダウンロードはすべての添付ファイルに失敗しました");
}最後に {
もし(ZOS!= NULL){
{試します
zos.close();
}キャッチ(例外E2){
logger.info(、e2の「入力ストリームのクローズ中にエラーが発生しました」);
}
}
もし(OutputStreamの!= NULL){
{試します
outputStream.close();
}キャッチ(例外E2){
logger.info(、e2の「入力ストリームのクローズ中にエラーが発生しました」);
}
}
}
}
3. JS要求受信方法。
注意:AJAX要求を使用してファイルをダウンロードしないので、一般的にWindow.openのアプローチを使用して、要求に応答することができません。
window.open(文脈+ "/サブ/ submetadataatt / ZIPファイルbusiId =?" + downloadId); // ここでdownloadIdが、私は背景を広めるために必要な変数です。
概要:アップロード、ダウンロード、彼らはターンを再生することができます前に、実際には、JavaのIOに非常に精通している上で動作し、我々は基礎を把握しなければならないプロジェクトにナビゲートすることができ、ない私は他人から学ぶ必要がある何か、私たちは、一緒に働いて、是非!
:詳細な設定情報は、私が書いた記事を参照することができますhttp://blog.ncmem.com/wordpress/2019/08/28/java%e6%89%b9%e9%87%8f%e4%b8%8b %E8%BD%BD /