データベースBLOBイメージファイル、マルチピクチャーパッケージダウンロード

ブロブの画像ファイルは、データベースに格納され、フロントパックのダウンロード

データベースエンティティクラスの画像ファイル

com.cmrh.mspserver.pos.dtoパッケージ; 

インポートしたjava.io.Serializable; 

インポートorg.springframework.format.annotation.DateTimeFormat; 

publicクラスMspPosImage実装はSerializable { 
	
	プライベートロングのserialVersionUID =最終的な静的-4668256147224146458L; 

	/ ** 
	 *画像の種類
	 * / 
	プライベート文字列のimageType; 
	
	/ ** 
	 *映像コンテンツ
	 * / 
	プライベートバイト[]またimageValue; 
	
	/ ** 
	 *画像シーケンス
	 * / 
	プライベート整数SORTNUM; 

    / ** 
     *作成したフィールドのdb_column:CREATED_USER 
     * / 
	プライベートjava.lang.StringでCreatedUser ; 
    / ** 
     *フィールドのdb_columnを時間を作成します。CREATED_DATEを
     * /
	@DateTimeFormat(パターン= "YYYY-MM-DD")
	プライベートjava.util.Date CreatedDateに。
    / ** 
     *更新人フィールドのdb_column:UPDATED_USER 
     * / 
	プライベートjava.lang.StringでupdatedUser。
    / ** 
     *更新时间フィールドのdb_column:UPDATED_DATE 
     * / 
	@DateTimeFormat(パターン= "YYYY-MM-DD")
	プライベートjava.util.Date updatedDate。
    / ** 
     *流水号フィールドのdb_column:PK_SERIAL 
     * / 
	プライベートjava.lang.StringでpkSerial。
	
	パブリック文字列getImageTypeが(){ 
		リターンのimageType。
	} 
	公共ボイドsetImageType(文字列のimageType){ 
		this.imageType =のimageType。
	} 
	公共のバイト[] getImageValue(){
		imageValueと返します。
	} 
	公共ボイドアクセサsetImageValue(バイト[]またimageValue){ 
		this.imageValue =またimageValue。
	} 
	公共java.lang.StringでgetCreatedUser(){ 
		createdUserを返します。
	} 
	公共ボイドsetCreatedUser(java.lang.StringでcreatedUser){ 
		this.createdUser = createdUser。
	} 
	公共java.util.Date getCreatedDate(){ 
		CreatedDateにを返します。
	} 
	公共ボイドsetCreatedDate(java.util.Date CreatedDateに){ 
		this.createdDate = CreatedDateに。
	} 
	公共java.lang.StringでgetUpdatedUser(){ 
		updatedUserを返します。
	} 
	公共ボイドsetUpdatedUser(java.lang.StringでupdatedUser){
		this.updatedUser = updatedUser。
	} 
	公共java.util.Date getUpdatedDate(){ 
		リターンupdatedDate。
	} 
	公共ボイドsetUpdatedDate(java.util.Date updatedDate){ 
		this.updatedDate = updatedDate。
	} 
	公共java.lang.StringでgetPkSerial(){ 
		pkSerialを返します。
	} 
	公共ボイドsetPkSerial(java.lang.StringでpkSerial){ 
		this.pkSerial = pkSerial。
	} 
	パブリック整数getSortNum(){ 
		SORTNUMを返します。
	} 
	公共ボイドsetSortNum(整数SORTNUM){ 
		this.sortNum = SORTNUM。
	} 
	
}

  ダウンロードSQL

<! -获取影像信息- > 
	<。SELECT ID = "getMspPosImageList" parameterClass = "java.util.Listに" 
		resultClassを= "com.cmrh.mspserver.pos.dto.MspPosImage"> 
		mpi.PK_SERIAL pkSerial、MPIを選択します。 IMAGE_TYPEのimageType、mpi.IMAGE_VALUEまたimageValue、mpi.SORT_NUM SORTNUM 
		FROM 
		MSPDATA.MSP_POS_IMAGEのMPI 
		mpi.PK_SERIAL INは
		<= "("クローズ= ")"連動=オープン反復""> 
			#pkSerial []#
		</反復> 
		 ORDER mpi.CREATED_DATE、mpi.SORT_NUM BY 
	</ select>の

  リクエストハンドラクラス

公共 のボイドDownloadImage(HttpServletResponseの応答、文字列imageIds){ 
        ZipOutputStream ZOS = ヌル;
         試み{ 

            文字列nowTimeString = DateUtil.millis2String(のSystem.currentTimeMillis());
             // ファイルの名前を 
            文字列downloadFilename = nowTimeString + ".zipファイル" ;
             // 変換中国語がそうすること化け生成することができる 
            downloadFilename = URLEncoder.encode(downloadFilename、「UTF-8」);
             // 返されたオブジェクトの応答がファイルストリームで指定 
            response.setContentType(「アプリケーション/オクテットのストリーム」);
             //ダウンロードファイル名]ボックスには、デフォルトの表示に配置された 
            response.setHeader( ";ファイル名=添付ファイル" + "のContent-処分"、downloadFilenameを); 
            ZOS = 新しい新しいZipOutputStream(response.getOutputStream());
             IF (StringUtils.isNotEmpty(imageIds)) { 
                リスト <文字列> IDLIST =は、Arrays.asList(imageIds.split( "" )); 
                リスト <MspPosImage>イメージ= debunkService.getMspPosImageList(IDLIST);
                 IF(!{CollectionUtils.isEmpty(イメージ))
                     のためのint型 I = 0;私はimages.sizeを()<; I ++は){
                        入力ストリームFIS = CommonUtil.byte2Input(images.get(I).getImageValue())。
                        zos.putNextEntry(新しいまたはZipEntry( "第" +(I + 1)+ "张截图.JPG" ));
                        バイト []バッファ= 新しい バイト [1024 ];
                        INT R = 0 一方、(!(R = fis.read(バッファ))= -1 ){ 
                            zos.write(バッファ、 0 、R)。
                        } 
                        fis.close()。
                    } 
                } 
            }
        } キャッチ(IOExceptionを電子){ 
            e.printStackTrace(); 
        } 最後に{
             場合(!ZOS = ヌル){
                 しようと{ 
                    )(zos.flush。
                    zos.close(); 
                } キャッチ(IOExceptionを電子){ 
                    e.printStackTrace(); 
                } 
            } 
        } 
    }

 

おすすめ

転載: www.cnblogs.com/antonyhubei/p/11323065.html