public String savePackage(CommonsMultipartFile file, Long pkVersion) throwsException {if (file == null) {throw new RuntimeException("上传的文件为空,请重新上传!");
}byte[] uploadBytes =file.getBytes();//获取包信息apk信息的返回结果
String[] apkResult = new String[3];
ZipInputStream zs= newZipInputStream(file.getInputStream());
BufferedInputStream bs= newBufferedInputStream(zs);
ZipEntry zipEntry;while ((zipEntry = zs.getNextEntry()) != null) {if(zipEntry.isDirectory()) {continue;
}byte[] bytes = null;if ("androidmanifest.xml".equals(zipEntry.getName().toLowerCase())) {
bytes= new byte[(int) zipEntry.getSize()];
bs.read(bytes,0, (int) zipEntry.getSize());
InputStream byteArrayInputStream= newByteArrayInputStream(bytes);
apkResult=AXMLPrinter.getApkInfo(byteArrayInputStream);
}
}
bs.close();
zs.close();if (StringUtils.isBlank(apkResult[0])) {throw new RuntimeException("未获取包名,请检测包");
}//end包//get包名
String pkPackage=apkResult[0];
String fileName=file.getOriginalFilename();
String fileSuffix= fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length());
PackageVer fileInfoModel= newPackageVer();
fileInfoModel.setPkName(fileName);
fileInfoModel.setPkSize(file.getSize());
fileInfoModel.setPkVersion(pkVersion);
fileInfoModel.setPkPackage(pkPackage);
MessageDigest md5= MessageDigest.getInstance("MD5");byte[] digest =md5.digest(uploadBytes);
String hashString= new BigInteger(1, digest).toString(16);
fileInfoModel.setPkMd5(hashString);
String fileId=fastDfsService.uploadPicFile(uploadBytes, fileSuffix);
logger.info("uploadPicFile result={}", fileId);
fileInfoModel.setPkUrl(fileUrlPrefix+ "/" +fileId);
fileInfoModel.setFileid(fileId);
packageVerBiz.add(fileInfoModel);return "SUCCESS";
}