package cn.keking.service.impl; import cn.keking.model.FileAttribute; import cn.keking.model.ReturnResponse; import cn.keking.service.FilePreview; import cn.keking.utils.DownloadUtils; import cn.keking.utils.FileUtils; import cn.keking.utils.ZipReader; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.ui.Model; import org.springframework.util.StringUtils; /** * Created by kl on 2018/1/17. * Content :处理压缩包文件 */ @Service public class CompressFilePreviewImpl implements FilePreview{ @Autowired FileUtils fileUtils; @Autowired DownloadUtils downloadUtils; @Autowired ZipReader zipReader; @Override public String filePreviewHandle(String url, Model model, FileAttribute fileAttribute) { String fileName=fileAttribute.getName(); String suffix=fileAttribute.getSuffix(); String fileTree = null; // 判断文件名是否存在(redis缓存读取) if (!StringUtils.hasText(fileUtils.getConvertedFile(fileName))) { ReturnResponse response = downloadUtils.downLoad(fileAttribute, fileName); if (0 != response.getCode()) { model.addAttribute("fileType", suffix); model.addAttribute("msg", response.getMsg()); return "fileNotSupported"; } String filePath = response.getContent(); if ("zip".equalsIgnoreCase(suffix) || "jar".equalsIgnoreCase(suffix) || "gzip".equalsIgnoreCase(suffix)) { fileTree = zipReader.readZipFile(filePath, fileName); } else if ("rar".equalsIgnoreCase(suffix)) { fileTree = zipReader.unRar(filePath, fileName); } else if ("7z".equalsIgnoreCase(suffix)) { fileTree = zipReader.read7zFile(filePath, fileName); } if (fileTree != null && !"null".equals(fileTree)) { fileUtils.addConvertedFile(fileName, fileTree); } } else { fileTree = fileUtils.getConvertedFile(fileName); } if (fileTree != null && !"null".equals(fileTree)) { model.addAttribute("fileTree", fileTree); return "compress"; } else { model.addAttribute("fileType", suffix); model.addAttribute("msg", "压缩文件类型不受支持,尝试在压缩的时候选择RAR4格式"); return "fileNotSupported"; } } }