forked from kekingcn/kkFileView
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
2.新增更多图片预览格式支持
- Loading branch information
Showing
33 changed files
with
447 additions
and
2,631 deletions.
There are no files selected for viewing
69 changes: 69 additions & 0 deletions
69
jodconverter-web/src/main/java/cn/keking/model/FileAttribute.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
package cn.keking.model; | ||
|
||
/** | ||
* Created by kl on 2018/1/17. | ||
* Content : | ||
*/ | ||
public class FileAttribute { | ||
|
||
private FileType type; | ||
|
||
private String suffix; | ||
|
||
private String name; | ||
|
||
private String url; | ||
|
||
private String decodedUrl; | ||
|
||
public FileAttribute() { | ||
} | ||
|
||
public FileAttribute(FileType type, String suffix, String name, String url, String decodedUrl) { | ||
this.type = type; | ||
this.suffix = suffix; | ||
this.name = name; | ||
this.url = url; | ||
this.decodedUrl = decodedUrl; | ||
} | ||
|
||
public FileType getType() { | ||
return type; | ||
} | ||
|
||
public void setType(FileType type) { | ||
this.type = type; | ||
} | ||
|
||
public String getSuffix() { | ||
return suffix; | ||
} | ||
|
||
public void setSuffix(String suffix) { | ||
this.suffix = suffix; | ||
} | ||
|
||
public String getName() { | ||
return name; | ||
} | ||
|
||
public void setName(String name) { | ||
this.name = name; | ||
} | ||
|
||
public String getUrl() { | ||
return url; | ||
} | ||
|
||
public void setUrl(String url) { | ||
this.url = url; | ||
} | ||
|
||
public String getDecodedUrl() { | ||
return decodedUrl; | ||
} | ||
|
||
public void setDecodedUrl(String decodedUrl) { | ||
this.decodedUrl = decodedUrl; | ||
} | ||
} |
27 changes: 27 additions & 0 deletions
27
jodconverter-web/src/main/java/cn/keking/model/FileType.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package cn.keking.model; | ||
|
||
/** | ||
* Created by kl on 2018/1/17. | ||
* Content :文件类型,文本,office,压缩包等等 | ||
*/ | ||
public enum FileType { | ||
picture("pictureFilePreviewImpl"), | ||
compress("compressFilePreviewImpl"), | ||
office("officeFilePreviewImpl"), | ||
simText("simTextFilePreviewImpl"), | ||
pdf("pdfFilePreviewImpl"), | ||
other("otherFilePreviewImpl"); | ||
|
||
private String instanceName; | ||
FileType(String instanceName){ | ||
this.instanceName=instanceName; | ||
} | ||
|
||
public String getInstanceName() { | ||
return instanceName; | ||
} | ||
|
||
public void setInstanceName(String instanceName) { | ||
this.instanceName = instanceName; | ||
} | ||
} |
11 changes: 11 additions & 0 deletions
11
jodconverter-web/src/main/java/cn/keking/service/FilePreview.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package cn.keking.service; | ||
|
||
import org.springframework.ui.Model; | ||
|
||
/** | ||
* Created by kl on 2018/1/17. | ||
* Content : | ||
*/ | ||
public interface FilePreview { | ||
String filePreviewHandle(String url, Model model); | ||
} |
30 changes: 30 additions & 0 deletions
30
jodconverter-web/src/main/java/cn/keking/service/FilePreviewFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package cn.keking.service; | ||
|
||
import cn.keking.model.FileAttribute; | ||
import cn.keking.utils.FileUtils; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.context.ApplicationContext; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.ui.Model; | ||
|
||
import java.util.Map; | ||
|
||
/** | ||
* Created by kl on 2018/1/17. | ||
* Content : | ||
*/ | ||
@Service | ||
public class FilePreviewFactory { | ||
|
||
@Autowired | ||
FileUtils fileUtils; | ||
|
||
@Autowired | ||
ApplicationContext context; | ||
|
||
public FilePreview get(String url) { | ||
Map<String, FilePreview> filePreviewMap = context.getBeansOfType(FilePreview.class); | ||
FileAttribute fileAttribute = fileUtils.getFileAttribute(url); | ||
return filePreviewMap.get(fileAttribute.getType().getInstanceName()); | ||
} | ||
} |
62 changes: 62 additions & 0 deletions
62
jodconverter-web/src/main/java/cn/keking/service/impl/CompressFilePreviewImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
package cn.keking.service.impl; | ||
|
||
import cn.keking.model.FileAttribute; | ||
import cn.keking.param.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=fileUtils.getFileAttribute(url); | ||
String fileName=fileAttribute.getName(); | ||
String decodedUrl=fileAttribute.getDecodedUrl(); | ||
String suffix=fileAttribute.getSuffix(); | ||
String fileTree = null; | ||
// 判断文件名是否存在(redis缓存读取) | ||
if (!StringUtils.hasText(fileUtils.getConvertedFile(fileName))) { | ||
ReturnResponse<String> response = downloadUtils.downLoad(decodedUrl, suffix, fileName); | ||
if (0 != response.getCode()) { | ||
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); | ||
} | ||
fileUtils.addConvertedFile(fileName, fileTree); | ||
} else { | ||
fileTree = fileUtils.getConvertedFile(fileName); | ||
} | ||
if (null != fileTree) { | ||
model.addAttribute("fileTree", fileTree); | ||
return "compress"; | ||
} else { | ||
model.addAttribute("msg", "压缩文件类型不受支持,尝试在压缩的时候选择RAR4格式"); | ||
return "fileNotSupported"; | ||
} | ||
} | ||
} |
73 changes: 73 additions & 0 deletions
73
jodconverter-web/src/main/java/cn/keking/service/impl/OfficeFilePreviewImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
package cn.keking.service.impl; | ||
|
||
import cn.keking.model.FileAttribute; | ||
import cn.keking.param.ReturnResponse; | ||
import cn.keking.service.FilePreview; | ||
import cn.keking.utils.DownloadUtils; | ||
import cn.keking.utils.FileUtils; | ||
import cn.keking.utils.OfficeToPdf; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.beans.factory.annotation.Value; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.ui.Model; | ||
import org.springframework.util.StringUtils; | ||
|
||
import java.io.File; | ||
|
||
/** | ||
* Created by kl on 2018/1/17. | ||
* Content :处理office文件 | ||
*/ | ||
@Service | ||
public class OfficeFilePreviewImpl implements FilePreview { | ||
|
||
@Autowired | ||
FileUtils fileUtils; | ||
|
||
@Value("${file.dir}") | ||
String fileDir; | ||
|
||
@Autowired | ||
DownloadUtils downloadUtils; | ||
|
||
@Autowired | ||
private OfficeToPdf officeToPdf; | ||
|
||
@Override | ||
public String filePreviewHandle(String url, Model model) { | ||
FileAttribute fileAttribute=fileUtils.getFileAttribute(url); | ||
String suffix=fileAttribute.getSuffix(); | ||
String fileName=fileAttribute.getName(); | ||
String decodedUrl=fileAttribute.getDecodedUrl(); | ||
boolean isHtml = suffix.equalsIgnoreCase("xls") || suffix.equalsIgnoreCase("xlsx"); | ||
String pdfName = fileName.substring(0, fileName.lastIndexOf(".") + 1) + (isHtml ? "html" : "pdf"); | ||
// 判断之前是否已转换过,如果转换过,直接返回,否则执行转换 | ||
if (!fileUtils.listConvertedFiles().containsKey(pdfName)) { | ||
String filePath = fileDir + fileName; | ||
if (!new File(filePath).exists()) { | ||
ReturnResponse<String> response = downloadUtils.downLoad(decodedUrl, suffix, null); | ||
if (0 != response.getCode()) { | ||
model.addAttribute("msg", response.getMsg()); | ||
return "fileNotSupported"; | ||
} | ||
filePath = response.getContent(); | ||
} | ||
String outFilePath = fileDir + pdfName; | ||
if (StringUtils.hasText(outFilePath)) { | ||
officeToPdf.openOfficeToPDF(filePath, outFilePath); | ||
File f = new File(filePath); | ||
if (f.exists()) { | ||
f.delete(); | ||
} | ||
if (isHtml) { | ||
// 对转换后的文件进行操作(改变编码方式) | ||
fileUtils.doActionConvertedFile(outFilePath); | ||
} | ||
// 加入缓存 | ||
fileUtils.addConvertedFile(pdfName, fileUtils.getRelativePath(outFilePath)); | ||
} | ||
} | ||
model.addAttribute("pdfUrl", pdfName); | ||
return isHtml ? "html" : "pdf"; | ||
} | ||
} |
19 changes: 19 additions & 0 deletions
19
jodconverter-web/src/main/java/cn/keking/service/impl/OtherFilePreviewImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package cn.keking.service.impl; | ||
|
||
import cn.keking.service.FilePreview; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.ui.Model; | ||
|
||
/** | ||
* Created by kl on 2018/1/17. | ||
* Content :其他文件 | ||
*/ | ||
@Service | ||
public class OtherFilePreviewImpl implements FilePreview { | ||
@Override | ||
public String filePreviewHandle(String url, Model model) { | ||
model.addAttribute("msg", "系统还不支持该格式文件的在线预览," + | ||
"如有需要请按下方显示的邮箱地址联系系统维护人员"); | ||
return "fileNotSupported"; | ||
} | ||
} |
19 changes: 19 additions & 0 deletions
19
jodconverter-web/src/main/java/cn/keking/service/impl/PdfFilePreviewImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package cn.keking.service.impl; | ||
|
||
import cn.keking.service.FilePreview; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.ui.Model; | ||
|
||
/** | ||
* Created by kl on 2018/1/17. | ||
* Content :处理pdf文件 | ||
*/ | ||
@Service | ||
public class PdfFilePreviewImpl implements FilePreview{ | ||
|
||
@Override | ||
public String filePreviewHandle(String url, Model model) { | ||
model.addAttribute("pdfUrl", url); | ||
return "pdf"; | ||
} | ||
} |
37 changes: 37 additions & 0 deletions
37
jodconverter-web/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package cn.keking.service.impl; | ||
|
||
import cn.keking.service.FilePreview; | ||
import cn.keking.utils.FileUtils; | ||
import com.google.common.collect.Lists; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.ui.Model; | ||
import org.springframework.web.context.request.RequestContextHolder; | ||
|
||
import java.util.List; | ||
|
||
/** | ||
* Created by kl on 2018/1/17. | ||
* Content :图片文件处理 | ||
*/ | ||
@Service | ||
public class PictureFilePreviewImpl implements FilePreview { | ||
|
||
@Autowired | ||
FileUtils fileUtils; | ||
|
||
@Override | ||
public String filePreviewHandle(String url, Model model) { | ||
String fileKey=(String) RequestContextHolder.currentRequestAttributes().getAttribute("fileKey",0); | ||
List imgUrls = Lists.newArrayList(url); | ||
try{ | ||
imgUrls.clear(); | ||
imgUrls.addAll(fileUtils.getRedisImgUrls(fileKey)); | ||
}catch (Exception e){ | ||
imgUrls = Lists.newArrayList(url); | ||
} | ||
model.addAttribute("imgurls", imgUrls); | ||
model.addAttribute("currentUrl",url); | ||
return "picture"; | ||
} | ||
} |
42 changes: 42 additions & 0 deletions
42
jodconverter-web/src/main/java/cn/keking/service/impl/SimTextFilePreviewImpl.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package cn.keking.service.impl; | ||
|
||
import cn.keking.model.FileAttribute; | ||
import cn.keking.model.FileType; | ||
import cn.keking.param.ReturnResponse; | ||
import cn.keking.service.FilePreview; | ||
import cn.keking.utils.FileUtils; | ||
import cn.keking.utils.SimTextUtil; | ||
import org.springframework.beans.factory.annotation.Autowired; | ||
import org.springframework.stereotype.Service; | ||
import org.springframework.ui.Model; | ||
|
||
import java.net.URLDecoder; | ||
|
||
/** | ||
* Created by kl on 2018/1/17. | ||
* Content :处理文本文件 | ||
*/ | ||
@Service | ||
public class SimTextFilePreviewImpl implements FilePreview{ | ||
|
||
@Autowired | ||
SimTextUtil simTextUtil; | ||
|
||
@Autowired | ||
FileUtils fileUtils; | ||
|
||
@Override | ||
public String filePreviewHandle(String url, Model model){ | ||
FileAttribute fileAttribute=fileUtils.getFileAttribute(url); | ||
String decodedUrl=fileAttribute.getDecodedUrl(); | ||
String fileName=fileAttribute.getName(); | ||
ReturnResponse<String> response = simTextUtil.readSimText(decodedUrl, fileName); | ||
if (0 != response.getCode()) { | ||
model.addAttribute("msg", response.getMsg()); | ||
return "fileNotSupported"; | ||
} | ||
model.addAttribute("ordinaryUrl", response.getMsg()); | ||
return "txt"; | ||
} | ||
|
||
} |
Oops, something went wrong.