`
duanfei
  • 浏览: 733533 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

照片打包下载

阅读更多
设计思路:
    通过业务表中照片编号获得需要下载的照片列表
    把用户session、照片列表与zip名称 传入照片下载公共方法中。获得下载路径。

    下载地址设计:
    /photozip/时间(yyyyMMdd)/HHmmss_5位随机码zipType
HOME_PATH=D\:\\soft\\Tomcat6\\virtualdir\\photo
DOWNPHOTO_PATH=/photozip
DOWN_TYPE_ZIP=/zip/


package com.jsict.httptransfer.comm;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.Date;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

import com.jshx.ictjs.httptransfer.utils.DateTools;
import com.jsict.ictmap.common.PropertiesManager;
import com.jsict.ictmap.util.StringUtil;
import com.jsict.ictmapmodule.custom.entiry.AttachmentBean;

/**
 * 打包下载图片
 * @author duanpf
 */
public class DownPhotoUtil {
	protected final Log logger = LogFactory.getLog(getClass());
	public String zipPath = "";	//压缩路径+文件
	public String zipFile = "";	//压缩路径
	public String downLoad = "";	//下载路径
	
	/**
	 * 下载图片
	 * @param list			AttachmentBeanList
	 * @param zipType		.zip
	 * @return	图片下载地址
	 * @throws Exception
	 */
	public String downPhoto(List list,String zipType) throws IOException{
		if(StringUtil.isEmpty(zipType)){
			zipType = ".zip";
		}
		String photoPath = PropertiesManager.getProperty("common.properties", "HOME_PATH");
		String zipTitle = createFile(photoPath);
		for (int i = 0; i < list.size(); i++) {
			AttachmentBean photo = (AttachmentBean) list.get(i);
			String path = photoPath + photo.getFilePath();
			logger.info("=============path["+i+"]="+path);
			copyFileToLocal(path, zipPath + "/" + photo.getName());
		}
		// 判断目录是否存在,不存在创建
		logger.info("压缩包存放路径:" + zipPath + "\n");
		String downPhotoPath = zipFile + "/" + zipTitle + zipType;	//压缩文件路径
		zip(zipPath, downPhotoPath);
		//deleteFile(zipPath);
		return downLoad + "/" + zipTitle + zipType;
	}
	
	/**
	 * 保存文件
	 * @param userSession	用户session
	 * @param photoPath		图片绝对路径
	 * @return 
	 * @throws IOException
	 */
	public String createFile(String photoPath) throws IOException{
		String savePath =  "";
		
		//年月日
        String saveDate=DateTools.parseDate2Str(new Date(), "yyyyMMdd");
        savePath = savePath + "/"  + saveDate;
        
        String fileDate=DateTools.parseDate2Str(new Date(), "HHmmss");
        int ronNum = (int)(Math.random()*100000);
        
        downLoad = PropertiesManager.getProperty("common.properties", "DOWNPHOTO_PATH")
        		+savePath;
        zipFile = photoPath + downLoad;
        zipPath = zipFile + "/" + (fileDate + "_"  + ronNum);
		File file = new File(zipPath);
		if (!file.exists()) {
			file.mkdirs();
		}
		
		return fileDate + "_"  + ronNum;
	}
	
	/**
	 * 
	 * 方法说明:删除指定文件路径下的文件
	 * 
	 * @param targetPath
	 *            :目标文件路径
	 * @return 返回值类型
	 * @Exception 异常对象
	 * 
	 */
	public void deleteFile(String targetPath) throws IOException {
		File targetFile = new File(targetPath);
		if (targetFile.isDirectory()) {
			FileUtils.deleteDirectory(targetFile);
		} else if (targetFile.isFile()) {
			targetFile.delete();
		}
	}
	
	/**
	 * 把inputFileName下的文件压缩到zipFileName对应路径
	 * 
	 * @param inputFileName
	 *            需压缩的文件(夹)路径
	 * @param zipFileName
	 *            压缩后生成压缩文件名
	 * @throws Exception
	 */
	public void zip(String inputFileName, String zipFileName) throws IOException {
		zip(zipFileName, new File(inputFileName));
	}

	public void zip(String zipFileName, File inputFile) throws IOException {
		ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
		zip(out, inputFile, "");
		out.close();
	}

	public void zip(ZipOutputStream out, File file, String base) throws IOException {
		if (file.isDirectory()) {
			File[] fl = file.listFiles();
			out.putNextEntry(new ZipEntry(base + "/"));
			out.setEncoding("gbk");
			base = base.length() == 0 ? "" : base + "/";
			for (int i = 0; i < fl.length; i++) {
				zip(out, fl[i], base + fl[i].getName());
			}
		} else {
			out.putNextEntry(new ZipEntry(base));
			out.setEncoding("gbk");
			FileInputStream in = new FileInputStream(file);
			int b;
			while ((b = in.read()) != -1) {
				out.write(b);
			}
			in.close();
		}
	}
	
	/**
	 * 将文件拷到clientPath指定文件夹下
	 * 
	 * @param fileFrom
	 *            远程文件路径
	 * @param fileTo
	 *            本地路径
	 * @return
	 */
	public void copyFileToLocal(String fileFrom, String fileTo) {
		try {
			if (fileTo.indexOf('.')<0){ //不包含
				String[] fileFromSplit = fileFrom.split("\\.");
				String fileFromSplitStr = fileFromSplit[fileFromSplit.length-1];
				fileTo=fileTo+"."+fileFromSplitStr;
			}
			FileInputStream in = new FileInputStream(fileFrom);
			FileOutputStream out = new FileOutputStream(fileTo);
			byte[] bt = new byte[1024];
			int count;
			while ((count = in.read(bt)) > 0) {
				out.write(bt, 0, count);
			}
			in.close();
			out.close();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


业务调用例子:
public String downPhoto()throws Exception {
		List<AttachmentBean> list = null;
		String zipType = ".zip";
		DownPhotoUtil dp= new DownPhotoUtil();
		try {
			downPhotoPath = "图片下载失败";
			if (list != null && list.size() > 0) {
				downPhotoPath = dp.downPhoto(list, zipType);
			}
			logger.info("压缩包下载路径:" + downPhotoPath);
		} catch (Exception e) {
			downPhotoPath = "图片下载失败";
		}
		return "downPhoto";
	}

  • 大小: 19.1 KB
分享到:
评论

相关推荐

    820张网页背景图片打包下载

    "820张网页背景图片打包下载"提供了一大批素材,对那些正在寻找网页设计灵感或者需要快速应用背景图像的开发者来说,无疑是一份宝贵的资源。 这820张背景图片涵盖了各种风格和主题,可能包括抽象图案、自然景观、...

    10张粉红色清爽PPT背景图片打包下载.rar

    本文将围绕“10张粉红色清爽PPT背景图片打包下载.rar”这一主题,深入探讨与之相关的知识点。 首先,粉红色在PPT设计中的应用:粉红色通常给人带来温馨、柔和和浪漫的感觉,它能吸引观众的注意力,同时又不会过于...

    JS一键批量打包下载图片-demo

    适用场景:一键将页面上的全部图片打包下载,纯前端实现。 使用插件:jszip.js、filesaver.js、jquery 下载后直接用chrome、firefox、IE11+打开即可查看效果,仅供学习参考。

    3D小人精选商务素材图片打包下载.rar

    【标题】"3D小人精选商务素材图片打包下载.rar" 涉及的主要知识点是3D图形设计、商务图像应用以及素材资源的管理和下载。3D小人,即三维立体的人物模型,常用于各种设计项目,特别是商务场景中,如演示文稿、宣传...

    清明节背景图片打包下载.rar

    本案例中,我们讨论的是一个名为"清明节背景图片打包下载.rar"的压缩文件,它包含了与清明节相关的幻灯片背景图片。RAR是一种常见的文件压缩格式,由WinRAR软件创建,用于将多个文件打包成一个更便于存储和传输的...

    48张3D小人高清图片打包下载

    本次分享的资源是"48张3D小人高清图片打包下载",它包含了一系列高质量的3D人物图像,非常适合用作网页设计、PPT制作以及其他视觉表现项目的素材。 首先,我们要了解3D小人图片的制作技术。3D建模是计算机图形学的...

    适合做PPT背景的图片打包下载

    "适合做PPT背景的图片打包下载"这个资源提供了这样一批图片,它们的特点是干净、简洁,不含有过于华丽的元素,多采用淡色调,旨在创造一个专业且不失优雅的展示环境。 首先,我们来了解一下选择PPT背景图片时应考虑...

    24张花草植物绿色背景图片打包下载.rar

    在这个场景下,"24张花草植物绿色背景图片打包下载.rar"是一个典型的例子,它包含了24张与花草植物相关的绿色背景图片,这些图片可能是用于制作PPT(PowerPoint)演示文稿、网页设计、平面设计或个人桌面壁纸等多种...

    纽扣女孩素材 图片打包下载

    【标题】"纽扣女孩素材 图片打包下载"所涵盖的知识点主要集中在图像设计和素材应用领域。这个标题表示提供了一组与“纽扣女孩”主题相关的图片素材,这些素材通常用于各种创意设计项目,如平面广告、网页设计、社交...

    十张可爱卡通幻灯片背景图片打包下载.rar

    本资源是一个名为"十张可爱卡通幻灯片背景图片打包下载.rar"的压缩文件,提供了10张以可爱卡通为主题的幻灯片背景图像,特别适合用于与儿童、小朋友相关的主题演讲或教学活动。 首先,我们来深入了解一下.PPT格式。...

    多个png图片打包下载

    3. 方便管理:将图片打包成压缩文件,便于用户整理和存储,节省硬盘空间。 4. 快速分享:打包后的文件体积相对较小,更易于通过电子邮件或其他方式快速分享。 如何处理压缩包中的PNG图片: 1. 解压文件:首先需要...

    2013端午节相关素材图片打包下载.rar

    2013端午节相关素材图片打包下载

    11张中国风水墨背景图片打包下载.rar

    "11张中国风水墨背景图片打包下载.rar" 是一个集合了11张高质量的中国风水墨背景图片的压缩包文件,专为幻灯片制作或其他设计工作提供素材。这个资源尤其适合那些希望在设计中融入中国传统美学元素的设计师或个人。 ...

    11张蓝色PPT背景图片打包下载.rar

    标题中的“11张蓝色PPT背景图片打包下载.rar”表明这是一个包含11个蓝色主题PPT背景图像的压缩文件,格式为RAR,通常用于集合多个文件并减小存储空间。这种类型的资源常被用于制作专业或正式的PowerPoint演示文稿,...

    11张橙色背景图片打包下载.rar

    "11张橙色背景图片打包下载.rar"是一个压缩包文件,它包含11个专门设计用于PowerPoint演示文稿的橙色背景图片。这些图片可能是为了吸引观众注意力、传达积极和活力的氛围,或者是作为设计主题的一部分。 橙色在色彩...

    情人节精美祝福图片打包下载

    在本资源中,我们主要关注的是一个与情人节相关的素材包,标题为“情人节精美祝福图片打包下载”。这个压缩包显然包含了一系列精心设计的图片,专为庆祝情人节而准备。这些图片可能适用于各种场合,如社交媒体分享、...

    30张适合做PPT背景图片的虚光淡雅图片打包下载.rar

    "30张适合做PPT背景图片的虚光淡雅图片打包下载.rar" 提供了一组精心挑选的图片资源,旨在为你的幻灯片设计增添专业且美观的元素。这些图片的特点是虚光与淡雅的结合,这种风格能够营造出一种清新、简洁的视觉效果,...

    jquery打包,生成并下载zip文件

    标题 "jquery打包,生成并下载zip文件" 描述了一个使用jQuery技术在前端将图片文件打包成ZIP文件并供用户下载的场景。这个过程无需后端服务器的介入,从而减轻了服务器的压力并提高了用户体验。让我们详细了解一下这...

    25张女生喜欢的PPT背景图片打包下载.rar

    "25张女生喜欢的PPT背景图片打包下载.rar"是一个压缩文件,其中包含了25张专为女性受众设计的PPT背景图片。这些图片通常具有柔和的色彩、优雅的图案或者符合女性审美喜好的元素,能够为PPT增加视觉吸引力,提升整体...

Global site tag (gtag.js) - Google Analytics