service层
FileSaveRslt fileSaveRslt = new FileSaveRslt();
String base_path = fileSaveBasePath;
if(!StringUtils.isEmpty(fileSaveDirName)){
base_path += File.separator + fileSaveDirName;
}
if (multipartFile.getSize() == 0
|| multipartFile.getOriginalFilename() == null
|| (multipartFile.getOriginalFilename() != null
&& !multipartFile.getOriginalFilename().contains("."))) {
throw new BaseErrorException("文件格式不正确或文件为空!");
}
// 1.先下载文件到本地
String originalFilename = multipartFile.getOriginalFilename();
String destPath = base_path;
try {
FileUtil.writeFromStream(
multipartFile.getInputStream(), new File(destPath + File.separator + originalFilename));
//fileSaveRslt.setUrl();
// 2.解压文件
//unzipAndSaveFileInfo(originalFilename, destPath);
fileSaveRslt.setRelativeFilePath(File.separator + fileSaveDirName +File.separator + originalFilename);
fileSaveRslt.setUrl(destPath + File.separator + originalFilename);
fileSaveRslt.setOrigName(originalFilename);
return fileSaveRslt;
} catch (IOException e) {
e.printStackTrace();
throw new BaseErrorException("文件上传失败");
}
// // 3.备份压缩文件,删除解压的目录
// FileUtils.copyFile(
// new File(destPath + File.separator + originalFilename),
// new File(destPath + File.separator + "backup" + File.separator + originalFilename));
// 删除原来的上传的临时压缩包
// FileUtils.deleteQuietly(new File(destPath + File.separator + originalFilename));
//log.info("文件上传成功,文件名为:{}", originalFilename);
//return null;
解压文件
/**
* 解压和保存文件信息
*
* @param originalFilename 源文件名称
* @param destPath 目标路径
*/
private void unzipAndSaveFileInfo(String originalFilename, String destPath) throws IOException {
if (StringUtils.isEmpty(originalFilename) || !originalFilename.contains(".")) {
throw new BaseErrorException("文件名错误");
}
// 压缩
ZipUtil.unzip(
new File(destPath + File.separator + originalFilename),
new File(destPath),
Charset.forName("GBK"));
}
下载zip文件
public void downAdapayFileByDateDir(FileSaveRslt fileSaveRslt,HttpServletResponse response) throws IOException {
response.setHeader("Content-type", "application/zip");
String downloadFilename = new String(fileSaveRslt.getNewName().getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1);
response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename);
OutputStream outputStream = response.getOutputStream();
byte[] buff = new byte[1024];
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(new File(fileSaveBasePath+fileSaveRslt.getUrl())));
int i = bis.read(buff);
while (i != -1) {
outputStream.write(buff, 0, buff.length);
outputStream.flush();
i = bis.read(buff);
}
}
删除zip压缩文件
public String deleteMoreDownload(JSONObject jsonObject) {
String url = (String) jsonObject.get("url");
Long id = jsonObject.getLong("id");
if(id != null){
AdapayCorpmember adapayCorpmember = new AdapayCorpmember();
adapayCorpmember.setId(id);
adapayCorpmember.setAttachFile("");
adapayCorpmemberDao.updateByPrimaryKeySelective(adapayCorpmember);
}
File file = new File(fileSaveBasePath+url);
try {
FileUtils.deleteQuietly(file);
return "success";
}catch (Exception e){
return "fail";
}
}