* 功能:压缩多个文件成一个zip文件
* @param srcfile:源文件列表
* @param zipfile:压缩后的文件
*/
public static void zipFiles(File[] srcfile,File zipfile){
byte[] buf=new byte[1024];
try {
//ZipOutputStream类:完成文件或文件夹的压缩
ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipfile));
for(int i=0;i<srcfile.length;i++){
FileInputStream in=new FileInputStream(srcfile[i]);
out.putNextEntry(new ZipEntry(srcfile[i].getName()));
int len;
while((len=in.read(buf))>0){
out.write(buf,0,len);
}
out.closeEntry();
in.close();
}
out.close();
System.out.println("压缩完成.");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 功能:解压缩
* @param zipfile:需要解压缩的文件
* @param descDir:解压后的目标目录
*/
public static void unZipFiles(File zipfile,String descDir){
try {
ZipFile zf=new ZipFile(zipfile);
for(Enumeration entries=zf.entries();entries.hasMoreElements();){
ZipEntry entry=(ZipEntry) entries.nextElement();
String zipEntryName=entry.getName();
InputStream in=zf.getInputStream(entry);
OutputStream out=new FileOutputStream(descDir+zipEntryName);
byte[] buf1=new byte[1024];
int len;
while((len=in.read(buf1))>0){
out.write(buf1,0,len);
}
in.close();
out.close();
System.out.println("解压缩完成.");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**功能:
* @param args
* https://zcmlccontract.zcmlc.com/expiredate/2018/20180709/hgypdf/temporary_dianzi_709e9d7465ac0f10.pdf
* https://zcmlccontract.zcmlc.com/expiredate/2018/20180709/hgypdf/temporary_dianzi_648edb3bce2ecc0a.pdf
*/
public static void main(String[] args) {
cc();
//2个源文件
File f1=new File("e:\\test\\a.pdf");
File f2=new File("e:\\test\\b.txt");
File[] srcfile={f1,f2};
//压缩后的文件
File zipfile=new File("e:\\test\\c.zip");
// TestZIP.zipFiles(srcfile, zipfile);
//需要解压缩的文件
File file=new File("D:\\workspace\\flexTest\\src\\com\\biao\\test\\biao.zip");
//解压后的目标目录
String dir="D:\\workspace\\flexTest\\src\\com\\biao\\test\\";
// TestZIP.unZipFiles(file, dir);
}
//将url内容转换为输入流
private static InputStream aa(String wurl){
try {
URL url = new URL(wurl);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
//设置超时间为3秒
conn.setConnectTimeout(3*1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//得到输入流
InputStream inputStream = conn.getInputStream();
return inputStream;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//
@RequestMapping(value = "zcmuserdata/{loanid}")
public void userData(@PathVariable("loanid") String loanid,
HttpServletRequest req,HttpServletResponse response) {
try {
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
///
//获取需要的资料信息
//1.获取用户身份证正反面url
AcLoanApplyInfo apply = loanInfoIService.queryLoanBasicInfo(loanid);
if(apply!=null){
RealNameAuthentication cardNo = realNameAuthenticationService.querByIdentiyCardNo(apply.getCustIdCard());
if(cardNo!=null){
String ZCMFJURL = FileUtils.getValueByPropertiesKey("ZCMFJURL", "resource.properties");
String idcardimg1 = cardNo.getIdcardimg1();//身份证正面照片
String idcardimg2 = cardNo.getIdcardimg2();//身份证反面照片
list.add(aa(ZCMFJURL+idcardimg1,"idcardimg1.png"));
list.add(aa(ZCMFJURL+idcardimg2,"idcardimg2.png"));
}
}
//2.获取活体照片
String rurl = geturl(loanid,"R");
if(!"".equals(rurl)){
list.add(aa(rurl,"livingphoto.png"));
}
//3.获取购物信息(天猫或者京东)
String tmurl = geturl(loanid,"ADD_TM");
if(!"".equals(tmurl)){
list.add(aa(tmurl,"tm.png"));
}
String jdurl = geturl(loanid,"ADD_JD");
if(!"".equals(jdurl)){
list.add(aa(jdurl,"jd.png"));
}
//流处理
String fileName="userdata.zip";
ZipOutputStream out=new ZipOutputStream(response.getOutputStream());
// 中文文件名必须转码为 ISO8859-1,否则为乱码
String fileNameDown = new String(fileName.getBytes(), "ISO8859-1");
// 作为附件下载
response.setHeader("Content-Disposition", "attachment;filename=" + fileNameDown);
byte[] buf=new byte[1024];
for (Map<String, Object> map2 : list) {
InputStream in=(InputStream) map2.get("in");
out.putNextEntry(new ZipEntry(map2.get("name").toString()));
int len;
while((len=in.read(buf))>0){
out.write(buf,0,len);
}
out.closeEntry();
in.close();
}
out.close();
log.info("ZCMuserData >>>output success==loanid="+loanid);
} catch (Exception e) {
e.printStackTrace();
}
}