mirror of
https://gitee.com/kekingcn/file-online-preview.git
synced 2025-04-05 17:37:49 +08:00
解压相关
This commit is contained in:
parent
f989fbf9c9
commit
7e8de7c754
@ -112,7 +112,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.junrar</groupId>
|
<groupId>com.github.junrar</groupId>
|
||||||
<artifactId>junrar</artifactId>
|
<artifactId>junrar</artifactId>
|
||||||
<version>1.0.1</version>
|
<version>4.0.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.sourceforge.jchardet</groupId>
|
<groupId>net.sourceforge.jchardet</groupId>
|
||||||
|
@ -38,6 +38,7 @@ public class CompressFilePreviewImpl implements FilePreview{
|
|||||||
if (!StringUtils.hasText(fileUtils.getConvertedFile(fileName))) {
|
if (!StringUtils.hasText(fileUtils.getConvertedFile(fileName))) {
|
||||||
ReturnResponse<String> response = downloadUtils.downLoad(decodedUrl, suffix, fileName);
|
ReturnResponse<String> response = downloadUtils.downLoad(decodedUrl, suffix, fileName);
|
||||||
if (0 != response.getCode()) {
|
if (0 != response.getCode()) {
|
||||||
|
model.addAttribute("fileType", suffix);
|
||||||
model.addAttribute("msg", response.getMsg());
|
model.addAttribute("msg", response.getMsg());
|
||||||
return "fileNotSupported";
|
return "fileNotSupported";
|
||||||
}
|
}
|
||||||
@ -47,14 +48,17 @@ public class CompressFilePreviewImpl implements FilePreview{
|
|||||||
} else if ("rar".equalsIgnoreCase(suffix)) {
|
} else if ("rar".equalsIgnoreCase(suffix)) {
|
||||||
fileTree = zipReader.unRar(filePath, fileName);
|
fileTree = zipReader.unRar(filePath, fileName);
|
||||||
}
|
}
|
||||||
fileUtils.addConvertedFile(fileName, fileTree);
|
if (fileTree != null && !"null".equals(fileTree)) {
|
||||||
|
fileUtils.addConvertedFile(fileName, fileTree);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
fileTree = fileUtils.getConvertedFile(fileName);
|
fileTree = fileUtils.getConvertedFile(fileName);
|
||||||
}
|
}
|
||||||
if (null != fileTree) {
|
if (fileTree != null && !"null".equals(fileTree)) {
|
||||||
model.addAttribute("fileTree", fileTree);
|
model.addAttribute("fileTree", fileTree);
|
||||||
return "compress";
|
return "compress";
|
||||||
} else {
|
} else {
|
||||||
|
model.addAttribute("fileType", suffix);
|
||||||
model.addAttribute("msg", "压缩文件类型不受支持,尝试在压缩的时候选择RAR4格式");
|
model.addAttribute("msg", "压缩文件类型不受支持,尝试在压缩的时候选择RAR4格式");
|
||||||
return "fileNotSupported";
|
return "fileNotSupported";
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,7 @@ public class ZipReader {
|
|||||||
List imgUrls=Lists.newArrayList();
|
List imgUrls=Lists.newArrayList();
|
||||||
String baseUrl= (String) RequestContextHolder.currentRequestAttributes().getAttribute("baseUrl",0);
|
String baseUrl= (String) RequestContextHolder.currentRequestAttributes().getAttribute("baseUrl",0);
|
||||||
try {
|
try {
|
||||||
Archive archive = new Archive(new File(filePath));
|
Archive archive = new Archive(new FileInputStream(new File(filePath)));
|
||||||
List<FileHeader> headers = archive.getFileHeaders();
|
List<FileHeader> headers = archive.getFileHeaders();
|
||||||
headers = sortedHeaders(headers);
|
headers = sortedHeaders(headers);
|
||||||
String archiveFileName = fileUtils.getFileNameFromPath(filePath);
|
String archiveFileName = fileUtils.getFileNameFromPath(filePath);
|
||||||
@ -176,10 +176,10 @@ public class ZipReader {
|
|||||||
private List<FileHeader> sortedHeaders(List<FileHeader> headers) {
|
private List<FileHeader> sortedHeaders(List<FileHeader> headers) {
|
||||||
List<FileHeader> sortedHeaders = new ArrayList<>();
|
List<FileHeader> sortedHeaders = new ArrayList<>();
|
||||||
Map<Integer, FileHeader> mapHeaders = new TreeMap<>();
|
Map<Integer, FileHeader> mapHeaders = new TreeMap<>();
|
||||||
headers.forEach(header -> mapHeaders.put(header.getFileNameW().length(), header));
|
headers.forEach(header -> mapHeaders.put(new Integer(0).equals(header.getFileNameW().length()) ? header.getFileNameString().length() : header.getFileNameW().length(), header));
|
||||||
for (Map.Entry<Integer, FileHeader> entry : mapHeaders.entrySet()){
|
for (Map.Entry<Integer, FileHeader> entry : mapHeaders.entrySet()){
|
||||||
for (FileHeader header : headers) {
|
for (FileHeader header : headers) {
|
||||||
if (entry.getKey().intValue() == header.getFileNameW().length()) {
|
if (entry.getKey().equals(new Integer(0).equals(header.getFileNameW().length()) ? header.getFileNameString().length() : header.getFileNameW().length())) {
|
||||||
sortedHeaders.add(header);
|
sortedHeaders.add(header);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user