Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
slm-fileview
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
梁杰芳
slm-fileview
Commits
342c391a
Commit
342c391a
authored
Dec 26, 2020
by
chenkailing
Committed by
kl
Dec 26, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
引入cpdetector解决文件编码识别问题
parent
f2d929e6
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
240 additions
and
400 deletions
+240
-400
cpdetector-1.04.jar
server/lib/cpdetector-1.04.jar
+0
-0
pom.xml
server/pom.xml
+8
-0
CompressFileReader.java
...r/src/main/java/cn/keking/service/CompressFileReader.java
+51
-58
FileConvertQueueTask.java
...src/main/java/cn/keking/service/FileConvertQueueTask.java
+8
-8
FileHandlerService.java
...r/src/main/java/cn/keking/service/FileHandlerService.java
+8
-33
FilePreview.java
server/src/main/java/cn/keking/service/FilePreview.java
+0
-5
OfficePluginManager.java
.../src/main/java/cn/keking/service/OfficePluginManager.java
+2
-2
OfficeToPdfService.java
...r/src/main/java/cn/keking/service/OfficeToPdfService.java
+4
-4
CadFilePreviewImpl.java
.../main/java/cn/keking/service/impl/CadFilePreviewImpl.java
+6
-6
CompressFilePreviewImpl.java
.../java/cn/keking/service/impl/CompressFilePreviewImpl.java
+13
-17
MarkdownFilePreviewImpl.java
.../java/cn/keking/service/impl/MarkdownFilePreviewImpl.java
+2
-0
MediaFilePreviewImpl.java
...ain/java/cn/keking/service/impl/MediaFilePreviewImpl.java
+5
-5
OfficeFilePreviewImpl.java
...in/java/cn/keking/service/impl/OfficeFilePreviewImpl.java
+7
-7
PdfFilePreviewImpl.java
.../main/java/cn/keking/service/impl/PdfFilePreviewImpl.java
+9
-9
PictureFilePreviewImpl.java
...n/java/cn/keking/service/impl/PictureFilePreviewImpl.java
+6
-6
SimTextFilePreviewImpl.java
...n/java/cn/keking/service/impl/SimTextFilePreviewImpl.java
+3
-3
XmlFilePreviewImpl.java
.../main/java/cn/keking/service/impl/XmlFilePreviewImpl.java
+2
-0
DownloadUtils.java
server/src/main/java/cn/keking/utils/DownloadUtils.java
+53
-61
FileCharsetDetector.java
...er/src/main/java/cn/keking/utils/FileCharsetDetector.java
+0
-157
FileUtils.java
server/src/main/java/cn/keking/utils/FileUtils.java
+41
-7
PdfUtils.java
server/src/main/java/cn/keking/utils/PdfUtils.java
+6
-6
ShedulerClean.java
server/src/main/java/cn/keking/utils/ShedulerClean.java
+1
-1
OnlinePreviewController.java
...ava/cn/keking/web/controller/OnlinePreviewController.java
+5
-5
No files found.
server/lib/cpdetector-1.04.jar
0 → 100644
View file @
342c391a
File added
server/pom.xml
View file @
342c391a
...
...
@@ -193,6 +193,14 @@
<scope>
system
</scope>
<systemPath>
${basedir}/lib/aspose-cad-19.9.jar
</systemPath>
</dependency>
<!-- 编码识别 -->
<dependency>
<groupId>
cpdetector
</groupId>
<artifactId>
cpdetector
</artifactId>
<version>
1.04
</version>
<scope>
system
</scope>
<systemPath>
${basedir}/lib/cpdetector-1.04.jar
</systemPath>
</dependency>
</dependencies>
<build>
<resources>
...
...
server/src/main/java/cn/keking/
utils/Zip
Reader.java
→
server/src/main/java/cn/keking/
service/CompressFile
Reader.java
View file @
342c391a
package
cn
.
keking
.
utils
;
package
cn
.
keking
.
service
;
import
cn.keking.config.ConfigConstants
;
import
cn.keking.model.FileType
;
import
cn.keking.
service.FilePreviewCommonService
;
import
cn.keking.
utils.FileUtils
;
import
cn.keking.web.filter.BaseUrlFilter
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
...
...
@@ -26,37 +26,34 @@ import java.util.regex.Matcher;
import
java.util.regex.Pattern
;
/**
*
* @author yudian-it
*
@d
ate 2017/11/27
*
cre
ate 2017/11/27
*/
@Component
public
class
ZipReader
{
static
Pattern
pattern
=
Pattern
.
compile
(
"^\\d+"
);
private
final
FilePreviewCommonService
filePreviewCommonService
;
public
class
CompressFileReader
{
private
static
final
Pattern
pattern
=
Pattern
.
compile
(
"^\\d+"
);
private
final
FileHandlerService
fileHandlerService
;
private
final
String
fileDir
=
ConfigConstants
.
getFileDir
();
private
final
ExecutorService
executors
=
Executors
.
newFixedThreadPool
(
Runtime
.
getRuntime
().
availableProcessors
());
public
ZipReader
(
FilePreviewCommonService
filePreviewCommon
Service
)
{
this
.
file
PreviewCommonService
=
filePreviewCommon
Service
;
public
CompressFileReader
(
FileHandlerService
fileHandler
Service
)
{
this
.
file
HandlerService
=
fileHandler
Service
;
}
public
String
readZipFile
(
String
filePath
,
String
fileKey
)
{
public
String
readZipFile
(
String
filePath
,
String
fileKey
)
{
String
archiveSeparator
=
"/"
;
Map
<
String
,
FileNode
>
appender
=
new
HashMap
<>();
List
<
String
>
imgUrls
=
new
LinkedList
<>();
String
baseUrl
=
BaseUrlFilter
.
getBaseUrl
();
String
archiveFileName
=
file
PreviewCommon
Service
.
getFileNameFromPath
(
filePath
);
String
archiveFileName
=
file
Handler
Service
.
getFileNameFromPath
(
filePath
);
try
{
ZipFile
zipFile
=
new
ZipFile
(
filePath
,
filePreviewCommonService
.
getFileEncodeUTFGBK
(
filePath
));
ZipFile
zipFile
=
new
ZipFile
(
filePath
,
FileUtils
.
getFileEncode
(
filePath
));
Enumeration
<
ZipArchiveEntry
>
entries
=
zipFile
.
getEntries
();
// 排序
entries
=
sortZipEntries
(
entries
);
List
<
Map
<
String
,
ZipArchiveEntry
>>
entriesToBeExtracted
=
new
LinkedList
<>();
while
(
entries
.
hasMoreElements
()){
while
(
entries
.
hasMoreElements
())
{
ZipArchiveEntry
entry
=
entries
.
nextElement
();
String
fullName
=
entry
.
getName
();
int
level
=
fullName
.
split
(
archiveSeparator
).
length
;
...
...
@@ -69,10 +66,10 @@ public class ZipReader {
entriesToBeExtracted
.
add
(
Collections
.
singletonMap
(
childName
,
entry
));
}
String
parentName
=
getLast2FileName
(
fullName
,
archiveSeparator
,
archiveFileName
);
parentName
=
(
level
-
1
)
+
"_"
+
parentName
;
FileType
type
=
filePreviewCommon
Service
.
typeFromUrl
(
childName
);
if
(
type
.
equals
(
FileType
.
picture
)){
//添加图片文件到图片列表
imgUrls
.
add
(
baseUrl
+
childName
);
parentName
=
(
level
-
1
)
+
"_"
+
parentName
;
FileType
type
=
fileHandler
Service
.
typeFromUrl
(
childName
);
if
(
type
.
equals
(
FileType
.
picture
))
{
//添加图片文件到图片列表
imgUrls
.
add
(
baseUrl
+
childName
);
}
FileNode
node
=
new
FileNode
(
originName
,
childName
,
parentName
,
new
ArrayList
<>(),
directory
,
fileKey
);
addNodes
(
appender
,
parentName
,
node
);
...
...
@@ -80,7 +77,7 @@ public class ZipReader {
}
// 开启新的线程处理文件解压
executors
.
submit
(
new
ZipExtractorWorker
(
entriesToBeExtracted
,
zipFile
,
filePath
));
file
PreviewCommonService
.
putImgCache
(
fileKey
,
imgUrls
);
file
HandlerService
.
putImgCache
(
fileKey
,
imgUrls
);
return
new
ObjectMapper
().
writeValueAsString
(
appender
.
get
(
""
));
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
...
...
@@ -90,28 +87,28 @@ public class ZipReader {
private
Enumeration
<
ZipArchiveEntry
>
sortZipEntries
(
Enumeration
<
ZipArchiveEntry
>
entries
)
{
List
<
ZipArchiveEntry
>
sortedEntries
=
new
LinkedList
<>();
while
(
entries
.
hasMoreElements
())
{
while
(
entries
.
hasMoreElements
())
{
sortedEntries
.
add
(
entries
.
nextElement
());
}
sortedEntries
.
sort
(
Comparator
.
comparingInt
(
o
->
o
.
getName
().
length
()));
return
Collections
.
enumeration
(
sortedEntries
);
}
public
String
unRar
(
String
filePath
,
String
fileKey
)
{
public
String
unRar
(
String
filePath
,
String
fileKey
)
{
Map
<
String
,
FileNode
>
appender
=
new
HashMap
<>();
List
<
String
>
imgUrls
=
new
ArrayList
<>();
String
baseUrl
=
BaseUrlFilter
.
getBaseUrl
();
try
{
Archive
archive
=
new
Archive
(
new
FileInputStream
(
new
File
(
filePath
)
));
Archive
archive
=
new
Archive
(
new
FileInputStream
(
filePath
));
List
<
FileHeader
>
headers
=
archive
.
getFileHeaders
();
headers
=
sortedHeaders
(
headers
);
String
archiveFileName
=
file
PreviewCommon
Service
.
getFileNameFromPath
(
filePath
);
List
<
Map
<
String
,
FileHeader
>>
headersToBeExtracted
=
new
ArrayList
<>();
String
archiveFileName
=
file
Handler
Service
.
getFileNameFromPath
(
filePath
);
List
<
Map
<
String
,
FileHeader
>>
headersToBeExtracted
=
new
ArrayList
<>();
for
(
FileHeader
header
:
headers
)
{
String
fullName
;
if
(
header
.
isUnicode
())
{
fullName
=
header
.
getFileNameW
();
}
else
{
}
else
{
fullName
=
header
.
getFileNameString
();
}
// 展示名
...
...
@@ -123,16 +120,16 @@ public class ZipReader {
headersToBeExtracted
.
add
(
Collections
.
singletonMap
(
childName
,
header
));
}
String
parentName
=
getLast2FileName
(
fullName
,
"\\"
,
archiveFileName
);
FileType
type
=
file
PreviewCommon
Service
.
typeFromUrl
(
childName
);
if
(
type
.
equals
(
FileType
.
picture
)){
//添加图片文件到图片列表
imgUrls
.
add
(
baseUrl
+
childName
);
FileType
type
=
file
Handler
Service
.
typeFromUrl
(
childName
);
if
(
type
.
equals
(
FileType
.
picture
))
{
//添加图片文件到图片列表
imgUrls
.
add
(
baseUrl
+
childName
);
}
FileNode
node
=
new
FileNode
(
originName
,
childName
,
parentName
,
new
ArrayList
<>(),
directory
,
fileKey
);
addNodes
(
appender
,
parentName
,
node
);
appender
.
put
(
childName
,
node
);
}
executors
.
submit
(
new
RarExtractorWorker
(
headersToBeExtracted
,
archive
,
filePath
));
file
PreviewCommonService
.
putImgCache
(
fileKey
,
imgUrls
);
file
HandlerService
.
putImgCache
(
fileKey
,
imgUrls
);
return
new
ObjectMapper
().
writeValueAsString
(
appender
.
get
(
""
));
}
catch
(
RarException
|
IOException
e
)
{
e
.
printStackTrace
();
...
...
@@ -140,19 +137,19 @@ public class ZipReader {
return
null
;
}
public
String
read7zFile
(
String
filePath
,
String
fileKey
)
{
public
String
read7zFile
(
String
filePath
,
String
fileKey
)
{
String
archiveSeparator
=
"/"
;
Map
<
String
,
FileNode
>
appender
=
new
HashMap
<>();
List
<
String
>
imgUrls
=
new
ArrayList
<>();
String
baseUrl
=
BaseUrlFilter
.
getBaseUrl
();
String
archiveFileName
=
file
PreviewCommon
Service
.
getFileNameFromPath
(
filePath
);
String
baseUrl
=
BaseUrlFilter
.
getBaseUrl
();
String
archiveFileName
=
file
Handler
Service
.
getFileNameFromPath
(
filePath
);
try
{
SevenZFile
zipFile
=
new
SevenZFile
(
new
File
(
filePath
));
Iterable
<
SevenZArchiveEntry
>
entries
=
zipFile
.
getEntries
();
// 排序
Enumeration
<
SevenZArchiveEntry
>
newEntries
=
sortSevenZEntries
(
entries
);
List
<
Map
<
String
,
SevenZArchiveEntry
>>
entriesToBeExtracted
=
new
ArrayList
<>();
while
(
newEntries
.
hasMoreElements
()){
while
(
newEntries
.
hasMoreElements
())
{
SevenZArchiveEntry
entry
=
newEntries
.
nextElement
();
String
fullName
=
entry
.
getName
();
int
level
=
fullName
.
split
(
archiveSeparator
).
length
;
...
...
@@ -165,10 +162,10 @@ public class ZipReader {
entriesToBeExtracted
.
add
(
Collections
.
singletonMap
(
childName
,
entry
));
}
String
parentName
=
getLast2FileName
(
fullName
,
archiveSeparator
,
archiveFileName
);
parentName
=
(
level
-
1
)
+
"_"
+
parentName
;
FileType
type
=
filePreviewCommon
Service
.
typeFromUrl
(
childName
);
if
(
type
.
equals
(
FileType
.
picture
)){
//添加图片文件到图片列表
imgUrls
.
add
(
baseUrl
+
childName
);
parentName
=
(
level
-
1
)
+
"_"
+
parentName
;
FileType
type
=
fileHandler
Service
.
typeFromUrl
(
childName
);
if
(
type
.
equals
(
FileType
.
picture
))
{
//添加图片文件到图片列表
imgUrls
.
add
(
baseUrl
+
childName
);
}
FileNode
node
=
new
FileNode
(
originName
,
childName
,
parentName
,
new
ArrayList
<>(),
directory
,
fileKey
);
addNodes
(
appender
,
parentName
,
node
);
...
...
@@ -176,7 +173,7 @@ public class ZipReader {
}
// 开启新的线程处理文件解压
executors
.
submit
(
new
SevenZExtractorWorker
(
entriesToBeExtracted
,
filePath
));
file
PreviewCommonService
.
putImgCache
(
fileKey
,
imgUrls
);
file
HandlerService
.
putImgCache
(
fileKey
,
imgUrls
);
return
new
ObjectMapper
().
writeValueAsString
(
appender
.
get
(
""
));
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
...
...
@@ -210,7 +207,7 @@ public class ZipReader {
List
<
FileHeader
>
sortedHeaders
=
new
ArrayList
<>();
Map
<
Integer
,
FileHeader
>
mapHeaders
=
new
TreeMap
<>();
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
)
{
if
(
entry
.
getKey
().
equals
(
new
Integer
(
0
).
equals
(
header
.
getFileNameW
().
length
())
?
header
.
getFileNameString
().
length
()
:
header
.
getFileNameW
().
length
()))
{
sortedHeaders
.
add
(
header
);
...
...
@@ -222,7 +219,7 @@ public class ZipReader {
private
static
String
getLast2FileName
(
String
fullName
,
String
seperator
,
String
rootName
)
{
if
(
fullName
.
endsWith
(
seperator
))
{
fullName
=
fullName
.
substring
(
0
,
fullName
.
length
()
-
1
);
fullName
=
fullName
.
substring
(
0
,
fullName
.
length
()
-
1
);
}
// 1.获取剩余部分
int
endIndex
=
fullName
.
lastIndexOf
(
seperator
);
...
...
@@ -237,7 +234,7 @@ public class ZipReader {
private
static
String
getLastFileName
(
String
fullName
,
String
seperator
)
{
if
(
fullName
.
endsWith
(
seperator
))
{
fullName
=
fullName
.
substring
(
0
,
fullName
.
length
()
-
1
);
fullName
=
fullName
.
substring
(
0
,
fullName
.
length
()
-
1
);
}
String
newName
=
fullName
;
if
(
fullName
.
contains
(
seperator
))
{
...
...
@@ -248,10 +245,11 @@ public class ZipReader {
public
static
Comparator
<
FileNode
>
sortComparator
=
new
Comparator
<
FileNode
>()
{
final
Collator
cmp
=
Collator
.
getInstance
(
Locale
.
US
);
@Override
public
int
compare
(
FileNode
o1
,
FileNode
o2
)
{
// 判断两个对比对象是否是开头包含数字,如果包含数字则获取数字并按数字真正大小进行排序
BigDecimal
num1
,
num2
;
BigDecimal
num1
,
num2
;
if
(
null
!=
(
num1
=
isStartNumber
(
o1
))
&&
null
!=
(
num2
=
isStartNumber
(
o2
)))
{
return
num1
.
subtract
(
num2
).
intValue
();
...
...
@@ -287,14 +285,16 @@ public class ZipReader {
this
.
childList
=
childList
;
this
.
directory
=
directory
;
}
public
FileNode
(
String
originName
,
String
fileName
,
String
parentFileName
,
List
<
FileNode
>
childList
,
boolean
directory
,
String
fileKey
)
{
public
FileNode
(
String
originName
,
String
fileName
,
String
parentFileName
,
List
<
FileNode
>
childList
,
boolean
directory
,
String
fileKey
)
{
this
.
originName
=
originName
;
this
.
fileName
=
fileName
;
this
.
parentFileName
=
parentFileName
;
this
.
childList
=
childList
;
this
.
directory
=
directory
;
this
.
fileKey
=
fileKey
;
this
.
fileKey
=
fileKey
;
}
public
String
getFileKey
()
{
return
fileKey
;
}
...
...
@@ -382,17 +382,15 @@ public class ZipReader {
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
if
(
new
File
(
filePath
).
exists
())
{
new
File
(
filePath
).
delete
();
}
FileUtils
.
deleteFileByPath
(
filePath
);
}
private
void
extractZipFile
(
String
childName
,
InputStream
zipFile
)
{
String
outPath
=
fileDir
+
childName
;
try
(
OutputStream
ot
=
new
FileOutputStream
(
outPath
)){
try
(
OutputStream
ot
=
new
FileOutputStream
(
outPath
))
{
byte
[]
inByte
=
new
byte
[
1024
];
int
len
;
while
((-
1
!=
(
len
=
zipFile
.
read
(
inByte
)))){
while
((-
1
!=
(
len
=
zipFile
.
read
(
inByte
))))
{
ot
.
write
(
inByte
,
0
,
len
);
}
}
catch
(
IOException
e
)
{
...
...
@@ -441,10 +439,7 @@ public class ZipReader {
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
if
(
new
File
(
filePath
).
exists
())
{
new
File
(
filePath
).
delete
();
}
FileUtils
.
deleteFileByPath
(
filePath
);
}
}
...
...
@@ -473,14 +468,12 @@ public class ZipReader {
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
if
(
new
File
(
filePath
).
exists
())
{
new
File
(
filePath
).
delete
();
}
FileUtils
.
deleteFileByPath
(
filePath
);
}
private
void
extractRarFile
(
String
childName
,
FileHeader
header
,
Archive
archive
)
{
String
outPath
=
fileDir
+
childName
;
try
(
OutputStream
ot
=
new
FileOutputStream
(
outPath
))
{
try
(
OutputStream
ot
=
new
FileOutputStream
(
outPath
))
{
archive
.
extractFile
(
header
,
ot
);
}
catch
(
IOException
|
RarException
e
)
{
e
.
printStackTrace
();
...
...
server/src/main/java/cn/keking/service/FileConvertQueueTask.java
View file @
342c391a
...
...
@@ -21,18 +21,18 @@ public class FileConvertQueueTask {
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
getClass
());
private
final
FilePreviewFactory
previewFactory
;
private
final
CacheService
cacheService
;
private
final
File
PreviewCommonService
filePreviewCommon
Service
;
private
final
File
HandlerService
fileHandler
Service
;
public
FileConvertQueueTask
(
FilePreviewFactory
previewFactory
,
CacheService
cacheService
,
File
PreviewCommonService
filePreviewCommon
Service
)
{
public
FileConvertQueueTask
(
FilePreviewFactory
previewFactory
,
CacheService
cacheService
,
File
HandlerService
fileHandler
Service
)
{
this
.
previewFactory
=
previewFactory
;
this
.
cacheService
=
cacheService
;
this
.
file
PreviewCommonService
=
filePreviewCommon
Service
;
this
.
file
HandlerService
=
fileHandler
Service
;
}
@PostConstruct
public
void
startTask
(){
ExecutorService
executorService
=
Executors
.
newFixedThreadPool
(
1
);
executorService
.
submit
(
new
ConvertTask
(
previewFactory
,
cacheService
,
file
PreviewCommon
Service
));
executorService
.
submit
(
new
ConvertTask
(
previewFactory
,
cacheService
,
file
Handler
Service
));
logger
.
info
(
"队列处理文件转换任务启动完成 "
);
}
...
...
@@ -41,14 +41,14 @@ public class FileConvertQueueTask {
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ConvertTask
.
class
);
private
final
FilePreviewFactory
previewFactory
;
private
final
CacheService
cacheService
;
private
final
File
PreviewCommonService
filePreviewCommon
Service
;
private
final
File
HandlerService
fileHandler
Service
;
public
ConvertTask
(
FilePreviewFactory
previewFactory
,
CacheService
cacheService
,
File
PreviewCommonService
filePreviewCommon
Service
)
{
File
HandlerService
fileHandler
Service
)
{
this
.
previewFactory
=
previewFactory
;
this
.
cacheService
=
cacheService
;
this
.
file
PreviewCommonService
=
filePreviewCommon
Service
;
this
.
file
HandlerService
=
fileHandler
Service
;
}
@Override
...
...
@@ -58,7 +58,7 @@ public class FileConvertQueueTask {
try
{
url
=
cacheService
.
takeQueueTask
();
if
(
url
!=
null
){
FileAttribute
fileAttribute
=
file
PreviewCommon
Service
.
getFileAttribute
(
url
,
null
);
FileAttribute
fileAttribute
=
file
Handler
Service
.
getFileAttribute
(
url
,
null
);
FileType
fileType
=
fileAttribute
.
getType
();
logger
.
info
(
"正在处理预览转换任务,url:{},预览类型:{}"
,
url
,
fileType
);
if
(
fileType
.
equals
(
FileType
.
compress
)
||
fileType
.
equals
(
FileType
.
office
)
||
fileType
.
equals
(
FileType
.
cad
))
{
...
...
server/src/main/java/cn/keking/service/File
PreviewCommon
Service.java
→
server/src/main/java/cn/keking/service/File
Handler
Service.java
View file @
342c391a
...
...
@@ -9,23 +9,23 @@ import org.springframework.util.StringUtils;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.*
;
import
java.nio.charset.Charset
;
import
java.nio.charset.StandardCharsets
;
import
java.util.*
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author yudian-it
* @date 2017/11/13
*/
@Component
public
class
File
PreviewCommon
Service
{
public
class
File
Handler
Service
{
private
static
final
String
DEFAULT_CONVERTER_CHARSET
=
System
.
getProperty
(
"sun.jnu.encoding"
);
private
final
String
fileDir
=
ConfigConstants
.
getFileDir
();
private
final
CacheService
cacheService
;
public
File
PreviewCommon
Service
(
CacheService
cacheService
)
{
public
File
Handler
Service
(
CacheService
cacheService
)
{
this
.
cacheService
=
cacheService
;
}
...
...
@@ -141,31 +141,6 @@ public class FilePreviewCommonService {
cacheService
.
putImgCache
(
fileKey
,
imgs
);
}
/**
* 判断文件编码格式
*
* @param path 绝对路径
* @return 编码格式
*/
public
String
getFileEncodeUTFGBK
(
String
path
)
{
String
enc
=
Charset
.
forName
(
"GBK"
).
name
();
File
file
=
new
File
(
path
);
InputStream
in
;
try
{
in
=
new
FileInputStream
(
file
);
byte
[]
b
=
new
byte
[
3
];
in
.
read
(
b
);
in
.
close
();
if
(
b
[
0
]
==
-
17
&&
b
[
1
]
==
-
69
&&
b
[
2
]
==
-
65
)
{
enc
=
StandardCharsets
.
UTF_8
.
name
();
}
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
System
.
out
.
println
(
"文件编码格式为:"
+
enc
);
return
enc
;
}
/**
* 对转换后的文件进行操作(改变编码方式)
*
...
...
@@ -290,11 +265,11 @@ public class FilePreviewCommonService {
attribute
.
setUrl
(
url
);
if
(
req
!=
null
)
{
String
officePreviewType
=
req
.
getParameter
(
"officePreviewType"
);
String
fileKey
=
req
.
getParameter
(
"fileKey"
);
if
(
StringUtils
.
hasText
(
officePreviewType
))
{
String
fileKey
=
req
.
getParameter
(
"fileKey"
);
if
(
StringUtils
.
hasText
(
officePreviewType
))
{
attribute
.
setOfficePreviewType
(
officePreviewType
);
}
if
(
StringUtils
.
hasText
(
fileKey
))
{
if
(
StringUtils
.
hasText
(
fileKey
))
{
attribute
.
setFileKey
(
fileKey
);
}
}
...
...
server/src/main/java/cn/keking/service/FilePreview.java
View file @
342c391a
package
cn
.
keking
.
service
;
import
cn.keking.config.ConfigConstants
;
import
cn.keking.model.FileAttribute
;
import
org.springframework.ui.Model
;
...
...
@@ -9,9 +8,5 @@ import org.springframework.ui.Model;
* Content :
*/
public
interface
FilePreview
{
String
TEXT_TYPE
=
"textType"
;
String
DEFAULT_TEXT_TYPE
=
"simText"
;
String
filePreviewHandle
(
String
url
,
Model
model
,
FileAttribute
fileAttribute
);
}
server/src/main/java/cn/keking/service/OfficeP
rocess
Manager.java
→
server/src/main/java/cn/keking/service/OfficeP
lugin
Manager.java
View file @
342c391a
...
...
@@ -32,9 +32,9 @@ import java.util.Properties;
*/
@Component
@Order
(
Ordered
.
HIGHEST_PRECEDENCE
)
public
class
OfficeP
rocess
Manager
{
public
class
OfficeP
lugin
Manager
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
OfficeP
rocess
Manager
.
class
);
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
OfficeP
lugin
Manager
.
class
);
private
OfficeManager
officeManager
;
...
...
server/src/main/java/cn/keking/service/OfficeToPdfService.java
View file @
342c391a
...
...
@@ -10,10 +10,10 @@ import java.io.File;
*/
@Component
public
class
OfficeToPdfService
{
private
final
OfficeP
rocessManager
officeProcess
Manager
;
private
final
OfficeP
luginManager
officePlugin
Manager
;
public
OfficeToPdfService
(
OfficeP
rocessManager
officeProcess
Manager
)
{
this
.
officeP
rocessManager
=
officeProcess
Manager
;
public
OfficeToPdfService
(
OfficeP
luginManager
officePlugin
Manager
)
{
this
.
officeP
luginManager
=
officePlugin
Manager
;
}
public
void
openOfficeToPDF
(
String
inputFilePath
,
String
outputFilePath
)
{
...
...
@@ -33,7 +33,7 @@ public class OfficeToPdfService {
public
void
office2pdf
(
String
inputFilePath
,
String
outputFilePath
)
{
OfficeDocumentConverter
converter
=
officeP
rocess
Manager
.
getDocumentConverter
();
OfficeDocumentConverter
converter
=
officeP
lugin
Manager
.
getDocumentConverter
();
if
(
null
!=
inputFilePath
)
{
File
inputFile
=
new
File
(
inputFilePath
);
// 判断目标文件路径是否为空
...
...
server/src/main/java/cn/keking/service/impl/CadFilePreviewImpl.java
View file @
342c391a
...
...
@@ -6,7 +6,7 @@ import cn.keking.model.ReturnResponse;
import
cn.keking.service.FilePreview
;
import
cn.keking.utils.CadUtils
;
import
cn.keking.utils.DownloadUtils
;
import
cn.keking.service.File
PreviewCommon
Service
;
import
cn.keking.service.File
Handler
Service
;
import
cn.keking.utils.PdfUtils
;
import
cn.keking.web.filter.BaseUrlFilter
;
import
org.springframework.stereotype.Service
;
...
...
@@ -22,7 +22,7 @@ import static cn.keking.service.impl.OfficeFilePreviewImpl.getPreviewType;
@Service
public
class
CadFilePreviewImpl
implements
FilePreview
{
private
final
File
PreviewCommonService
filePreviewCommon
Service
;
private
final
File
HandlerService
fileHandler
Service
;
private
final
DownloadUtils
downloadUtils
;
...
...
@@ -30,11 +30,11 @@ public class CadFilePreviewImpl implements FilePreview {
private
final
PdfUtils
pdfUtils
;
public
CadFilePreviewImpl
(
File
PreviewCommonService
filePreviewCommon
Service
,
public
CadFilePreviewImpl
(
File
HandlerService
fileHandler
Service
,
DownloadUtils
downloadUtils
,
CadUtils
cadUtils
,
PdfUtils
pdfUtils
)
{
this
.
file
PreviewCommonService
=
filePreviewCommon
Service
;
this
.
file
HandlerService
=
fileHandler
Service
;
this
.
downloadUtils
=
downloadUtils
;
this
.
cadUtils
=
cadUtils
;
this
.
pdfUtils
=
pdfUtils
;
...
...
@@ -56,7 +56,7 @@ public class CadFilePreviewImpl implements FilePreview {
String
pdfName
=
fileName
.
substring
(
0
,
fileName
.
lastIndexOf
(
"."
)
+
1
)
+
"pdf"
;
String
outFilePath
=
FILE_DIR
+
pdfName
;
// 判断之前是否已转换过,如果转换过,直接返回,否则执行转换
if
(!
file
PreviewCommon
Service
.
listConvertedFiles
().
containsKey
(
pdfName
)
||
!
ConfigConstants
.
isCacheEnabled
())
{
if
(!
file
Handler
Service
.
listConvertedFiles
().
containsKey
(
pdfName
)
||
!
ConfigConstants
.
isCacheEnabled
())
{
String
filePath
;
ReturnResponse
<
String
>
response
=
downloadUtils
.
downLoad
(
fileAttribute
,
null
);
if
(
0
!=
response
.
getCode
())
{
...
...
@@ -74,7 +74,7 @@ public class CadFilePreviewImpl implements FilePreview {
}
if
(
ConfigConstants
.
isCacheEnabled
())
{
// 加入缓存
file
PreviewCommonService
.
addConvertedFile
(
pdfName
,
filePreviewCommon
Service
.
getRelativePath
(
outFilePath
));
file
HandlerService
.
addConvertedFile
(
pdfName
,
fileHandler
Service
.
getRelativePath
(
outFilePath
));
}
}
}
...
...
server/src/main/java/cn/keking/service/impl/CompressFilePreviewImpl.java
View file @
342c391a
...
...
@@ -5,8 +5,8 @@ import cn.keking.model.FileAttribute;
import
cn.keking.model.ReturnResponse
;
import
cn.keking.service.FilePreview
;
import
cn.keking.utils.DownloadUtils
;
import
cn.keking.service.File
PreviewCommon
Service
;
import
cn.keking.
utils.Zip
Reader
;
import
cn.keking.service.File
Handler
Service
;
import
cn.keking.
service.CompressFile
Reader
;
import
org.springframework.stereotype.Service
;
import
org.springframework.ui.Model
;
import
org.springframework.util.StringUtils
;
...
...
@@ -18,18 +18,14 @@ import org.springframework.util.StringUtils;
@Service
public
class
CompressFilePreviewImpl
implements
FilePreview
{
private
final
FilePreviewCommonService
filePreviewCommonService
;
private
final
FileHandlerService
fileHandlerService
;
private
final
DownloadUtils
downloadUtils
;
private
final
CompressFileReader
compressFileReader
;
private
final
ZipReader
zipReader
;
public
CompressFilePreviewImpl
(
FilePreviewCommonService
filePreviewCommonService
,
DownloadUtils
downloadUtils
,
ZipReader
zipReader
)
{
this
.
filePreviewCommonService
=
filePreviewCommonService
;
public
CompressFilePreviewImpl
(
FileHandlerService
fileHandlerService
,
DownloadUtils
downloadUtils
,
CompressFileReader
compressFileReader
)
{
this
.
fileHandlerService
=
fileHandlerService
;
this
.
downloadUtils
=
downloadUtils
;
this
.
zipReader
=
zip
Reader
;
this
.
compressFileReader
=
compressFile
Reader
;
}
@Override
...
...
@@ -38,7 +34,7 @@ public class CompressFilePreviewImpl implements FilePreview {
String
suffix
=
fileAttribute
.
getSuffix
();
String
fileTree
=
null
;
// 判断文件名是否存在(redis缓存读取)
if
(!
StringUtils
.
hasText
(
file
PreviewCommon
Service
.
getConvertedFile
(
fileName
))
||
!
ConfigConstants
.
isCacheEnabled
())
{
if
(!
StringUtils
.
hasText
(
file
Handler
Service
.
getConvertedFile
(
fileName
))
||
!
ConfigConstants
.
isCacheEnabled
())
{
ReturnResponse
<
String
>
response
=
downloadUtils
.
downLoad
(
fileAttribute
,
fileName
);
if
(
0
!=
response
.
getCode
())
{
model
.
addAttribute
(
"fileType"
,
suffix
);
...
...
@@ -47,17 +43,17 @@ public class CompressFilePreviewImpl implements FilePreview {
}
String
filePath
=
response
.
getContent
();
if
(
"zip"
.
equalsIgnoreCase
(
suffix
)
||
"jar"
.
equalsIgnoreCase
(
suffix
)
||
"gzip"
.
equalsIgnoreCase
(
suffix
))
{
fileTree
=
zip
Reader
.
readZipFile
(
filePath
,
fileName
);
fileTree
=
compressFile
Reader
.
readZipFile
(
filePath
,
fileName
);
}
else
if
(
"rar"
.
equalsIgnoreCase
(
suffix
))
{
fileTree
=
zip
Reader
.
unRar
(
filePath
,
fileName
);
fileTree
=
compressFile
Reader
.
unRar
(
filePath
,
fileName
);
}
else
if
(
"7z"
.
equalsIgnoreCase
(
suffix
))
{
fileTree
=
zip
Reader
.
read7zFile
(
filePath
,
fileName
);
fileTree
=
compressFile
Reader
.
read7zFile
(
filePath
,
fileName
);
}
if
(
fileTree
!=
null
&&
!
"null"
.
equals
(
fileTree
)
&&
ConfigConstants
.
isCacheEnabled
())
{
file
PreviewCommon
Service
.
addConvertedFile
(
fileName
,
fileTree
);
file
Handler
Service
.
addConvertedFile
(
fileName
,
fileTree
);
}
}
else
{
fileTree
=
file
PreviewCommon
Service
.
getConvertedFile
(
fileName
);
fileTree
=
file
Handler
Service
.
getConvertedFile
(
fileName
);
}
if
(
fileTree
!=
null
&&
!
"null"
.
equals
(
fileTree
))
{
model
.
addAttribute
(
"fileTree"
,
fileTree
);
...
...
server/src/main/java/cn/keking/service/impl/MarkdownFilePreviewImpl.java
View file @
342c391a
...
...
@@ -5,6 +5,8 @@ import cn.keking.service.FilePreview;
import
org.springframework.stereotype.Service
;
import
org.springframework.ui.Model
;
import
static
com
.
sun
.
glass
.
ui
.
Clipboard
.
TEXT_TYPE
;
/**
* @author kl (http://kailing.pub)
* @since 2020/12/25
...
...
server/src/main/java/cn/keking/service/impl/MediaFilePreviewImpl.java
View file @
342c391a
...
...
@@ -4,7 +4,7 @@ import cn.keking.model.FileAttribute;
import
cn.keking.model.ReturnResponse
;
import
cn.keking.service.FilePreview
;
import
cn.keking.utils.DownloadUtils
;
import
cn.keking.service.File
PreviewCommon
Service
;
import
cn.keking.service.File
Handler
Service
;
import
cn.keking.web.filter.BaseUrlFilter
;
import
org.springframework.stereotype.Service
;
import
org.springframework.ui.Model
;
...
...
@@ -19,12 +19,12 @@ public class MediaFilePreviewImpl implements FilePreview {
private
final
DownloadUtils
downloadUtils
;
private
final
File
PreviewCommonService
filePreviewCommon
Service
;
private
final
File
HandlerService
fileHandler
Service
;
public
MediaFilePreviewImpl
(
DownloadUtils
downloadUtils
,
File
PreviewCommonService
filePreviewCommon
Service
)
{
File
HandlerService
fileHandler
Service
)
{
this
.
downloadUtils
=
downloadUtils
;
this
.
file
PreviewCommonService
=
filePreviewCommon
Service
;
this
.
file
HandlerService
=
fileHandler
Service
;
}
@Override
...
...
@@ -37,7 +37,7 @@ public class MediaFilePreviewImpl implements FilePreview {
model
.
addAttribute
(
"msg"
,
response
.
getMsg
());
return
"fileNotSupported"
;
}
else
{
model
.
addAttribute
(
"mediaUrl"
,
BaseUrlFilter
.
getBaseUrl
()
+
file
PreviewCommon
Service
.
getRelativePath
(
response
.
getContent
()));
model
.
addAttribute
(
"mediaUrl"
,
BaseUrlFilter
.
getBaseUrl
()
+
file
Handler
Service
.
getRelativePath
(
response
.
getContent
()));
}
}
else
{
model
.
addAttribute
(
"mediaUrl"
,
url
);
...
...
server/src/main/java/cn/keking/service/impl/OfficeFilePreviewImpl.java
View file @
342c391a
...
...
@@ -5,7 +5,7 @@ import cn.keking.model.FileAttribute;
import
cn.keking.model.ReturnResponse
;
import
cn.keking.service.FilePreview
;
import
cn.keking.utils.DownloadUtils
;
import
cn.keking.service.File
PreviewCommon
Service
;
import
cn.keking.service.File
Handler
Service
;
import
cn.keking.service.OfficeToPdfService
;
import
cn.keking.utils.PdfUtils
;
import
cn.keking.web.filter.BaseUrlFilter
;
...
...
@@ -22,13 +22,13 @@ import java.util.List;
@Service
public
class
OfficeFilePreviewImpl
implements
FilePreview
{
private
final
File
PreviewCommonService
filePreviewCommon
Service
;
private
final
File
HandlerService
fileHandler
Service
;
private
final
PdfUtils
pdfUtils
;
private
final
DownloadUtils
downloadUtils
;
private
final
OfficeToPdfService
officeToPdfService
;
public
OfficeFilePreviewImpl
(
File
PreviewCommonService
filePreviewCommon
Service
,
PdfUtils
pdfUtils
,
DownloadUtils
downloadUtils
,
OfficeToPdfService
officeToPdfService
)
{
this
.
file
PreviewCommonService
=
filePreviewCommon
Service
;
public
OfficeFilePreviewImpl
(
File
HandlerService
fileHandler
Service
,
PdfUtils
pdfUtils
,
DownloadUtils
downloadUtils
,
OfficeToPdfService
officeToPdfService
)
{
this
.
file
HandlerService
=
fileHandler
Service
;
this
.
pdfUtils
=
pdfUtils
;
this
.
downloadUtils
=
downloadUtils
;
this
.
officeToPdfService
=
officeToPdfService
;
...
...
@@ -49,7 +49,7 @@ public class OfficeFilePreviewImpl implements FilePreview {
String
pdfName
=
fileName
.
substring
(
0
,
fileName
.
lastIndexOf
(
"."
)
+
1
)
+
(
isHtml
?
"html"
:
"pdf"
);
String
outFilePath
=
FILE_DIR
+
pdfName
;
// 判断之前是否已转换过,如果转换过,直接返回,否则执行转换
if
(!
file
PreviewCommon
Service
.
listConvertedFiles
().
containsKey
(
pdfName
)
||
!
ConfigConstants
.
isCacheEnabled
())
{
if
(!
file
Handler
Service
.
listConvertedFiles
().
containsKey
(
pdfName
)
||
!
ConfigConstants
.
isCacheEnabled
())
{
String
filePath
;
ReturnResponse
<
String
>
response
=
downloadUtils
.
downLoad
(
fileAttribute
,
null
);
if
(
0
!=
response
.
getCode
())
{
...
...
@@ -62,11 +62,11 @@ public class OfficeFilePreviewImpl implements FilePreview {
officeToPdfService
.
openOfficeToPDF
(
filePath
,
outFilePath
);
if
(
isHtml
)
{
// 对转换后的文件进行操作(改变编码方式)
file
PreviewCommon
Service
.
doActionConvertedFile
(
outFilePath
);
file
Handler
Service
.
doActionConvertedFile
(
outFilePath
);
}
if
(
ConfigConstants
.
isCacheEnabled
())
{
// 加入缓存
file
PreviewCommonService
.
addConvertedFile
(
pdfName
,
filePreviewCommon
Service
.
getRelativePath
(
outFilePath
));
file
HandlerService
.
addConvertedFile
(
pdfName
,
fileHandler
Service
.
getRelativePath
(
outFilePath
));
}
}
}
...
...
server/src/main/java/cn/keking/service/impl/PdfFilePreviewImpl.java
View file @
342c391a
...
...
@@ -5,7 +5,7 @@ import cn.keking.model.FileAttribute;
import
cn.keking.model.ReturnResponse
;
import
cn.keking.service.FilePreview
;
import
cn.keking.utils.DownloadUtils
;
import
cn.keking.service.File
PreviewCommon
Service
;
import
cn.keking.service.File
Handler
Service
;
import
cn.keking.utils.PdfUtils
;
import
cn.keking.web.filter.BaseUrlFilter
;
import
org.springframework.stereotype.Service
;
...
...
@@ -20,7 +20,7 @@ import java.util.List;
@Service
public
class
PdfFilePreviewImpl
implements
FilePreview
{
private
final
File
PreviewCommonService
filePreviewCommon
Service
;
private
final
File
HandlerService
fileHandler
Service
;
private
final
PdfUtils
pdfUtils
;
...
...
@@ -28,10 +28,10 @@ public class PdfFilePreviewImpl implements FilePreview {
private
static
final
String
FILE_DIR
=
ConfigConstants
.
getFileDir
();
public
PdfFilePreviewImpl
(
File
PreviewCommonService
filePreviewCommon
Service
,
public
PdfFilePreviewImpl
(
File
HandlerService
fileHandler
Service
,
PdfUtils
pdfUtils
,
DownloadUtils
downloadUtils
)
{
this
.
file
PreviewCommonService
=
filePreviewCommon
Service
;
this
.
file
HandlerService
=
fileHandler
Service
;
this
.
pdfUtils
=
pdfUtils
;
this
.
downloadUtils
=
downloadUtils
;
}
...
...
@@ -46,7 +46,7 @@ public class PdfFilePreviewImpl implements FilePreview {
String
outFilePath
=
FILE_DIR
+
pdfName
;
if
(
OfficeFilePreviewImpl
.
OFFICE_PREVIEW_TYPE_IMAGE
.
equals
(
officePreviewType
)
||
OfficeFilePreviewImpl
.
OFFICE_PREVIEW_TYPE_ALL_IMAGES
.
equals
(
officePreviewType
))
{
//当文件不存在时,就去下载
if
(!
file
PreviewCommon
Service
.
listConvertedFiles
().
containsKey
(
pdfName
)
||
!
ConfigConstants
.
isCacheEnabled
())
{
if
(!
file
Handler
Service
.
listConvertedFiles
().
containsKey
(
pdfName
)
||
!
ConfigConstants
.
isCacheEnabled
())
{
ReturnResponse
<
String
>
response
=
downloadUtils
.
downLoad
(
fileAttribute
,
fileName
);
if
(
0
!=
response
.
getCode
())
{
model
.
addAttribute
(
"fileType"
,
suffix
);
...
...
@@ -56,7 +56,7 @@ public class PdfFilePreviewImpl implements FilePreview {
outFilePath
=
response
.
getContent
();
if
(
ConfigConstants
.
isCacheEnabled
())
{
// 加入缓存
file
PreviewCommonService
.
addConvertedFile
(
pdfName
,
filePreviewCommon
Service
.
getRelativePath
(
outFilePath
));
file
HandlerService
.
addConvertedFile
(
pdfName
,
fileHandler
Service
.
getRelativePath
(
outFilePath
));
}
}
List
<
String
>
imageUrls
=
pdfUtils
.
pdf2jpg
(
outFilePath
,
pdfName
,
baseUrl
);
...
...
@@ -75,17 +75,17 @@ public class PdfFilePreviewImpl implements FilePreview {
}
else
{
// 不是http开头,浏览器不能直接访问,需下载到本地
if
(
url
!=
null
&&
!
url
.
toLowerCase
().
startsWith
(
"http"
))
{
if
(!
file
PreviewCommon
Service
.
listConvertedFiles
().
containsKey
(
pdfName
)
||
!
ConfigConstants
.
isCacheEnabled
())
{
if
(!
file
Handler
Service
.
listConvertedFiles
().
containsKey
(
pdfName
)
||
!
ConfigConstants
.
isCacheEnabled
())
{
ReturnResponse
<
String
>
response
=
downloadUtils
.
downLoad
(
fileAttribute
,
pdfName
);
if
(
0
!=
response
.
getCode
())
{
model
.
addAttribute
(
"fileType"
,
suffix
);
model
.
addAttribute
(
"msg"
,
response
.
getMsg
());
return
"fileNotSupported"
;
}
model
.
addAttribute
(
"pdfUrl"
,
file
PreviewCommon
Service
.
getRelativePath
(
response
.
getContent
()));
model
.
addAttribute
(
"pdfUrl"
,
file
Handler
Service
.
getRelativePath
(
response
.
getContent
()));
if
(
ConfigConstants
.
isCacheEnabled
())
{
// 加入缓存
file
PreviewCommonService
.
addConvertedFile
(
pdfName
,
filePreviewCommon
Service
.
getRelativePath
(
outFilePath
));
file
HandlerService
.
addConvertedFile
(
pdfName
,
fileHandler
Service
.
getRelativePath
(
outFilePath
));
}
}
else
{
model
.
addAttribute
(
"pdfUrl"
,
pdfName
);
...
...
server/src/main/java/cn/keking/service/impl/PictureFilePreviewImpl.java
View file @
342c391a
...
...
@@ -4,7 +4,7 @@ import cn.keking.model.FileAttribute;
import
cn.keking.model.ReturnResponse
;
import
cn.keking.service.FilePreview
;
import
cn.keking.utils.DownloadUtils
;
import
cn.keking.service.File
PreviewCommon
Service
;
import
cn.keking.service.File
Handler
Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.ui.Model
;
import
org.springframework.util.CollectionUtils
;
...
...
@@ -18,13 +18,13 @@ import java.util.List;
@Service
public
class
PictureFilePreviewImpl
implements
FilePreview
{
private
final
File
PreviewCommonService
filePreviewCommon
Service
;
private
final
File
HandlerService
fileHandler
Service
;
private
final
DownloadUtils
downloadUtils
;
public
PictureFilePreviewImpl
(
File
PreviewCommonService
filePreviewCommon
Service
,
public
PictureFilePreviewImpl
(
File
HandlerService
fileHandler
Service
,
DownloadUtils
downloadUtils
)
{
this
.
file
PreviewCommonService
=
filePreviewCommon
Service
;
this
.
file
HandlerService
=
fileHandler
Service
;
this
.
downloadUtils
=
downloadUtils
;
}
...
...
@@ -33,7 +33,7 @@ public class PictureFilePreviewImpl implements FilePreview {
List
<
String
>
imgUrls
=
new
ArrayList
<>();
imgUrls
.
add
(
url
);
String
fileKey
=
fileAttribute
.
getFileKey
();
List
<
String
>
zipImgUrls
=
file
PreviewCommon
Service
.
getImgCache
(
fileKey
);
List
<
String
>
zipImgUrls
=
file
Handler
Service
.
getImgCache
(
fileKey
);
if
(!
CollectionUtils
.
isEmpty
(
zipImgUrls
))
{
imgUrls
.
addAll
(
zipImgUrls
);
}
...
...
@@ -45,7 +45,7 @@ public class PictureFilePreviewImpl implements FilePreview {
model
.
addAttribute
(
"msg"
,
response
.
getMsg
());
return
"fileNotSupported"
;
}
else
{
String
file
=
file
PreviewCommon
Service
.
getRelativePath
(
response
.
getContent
());
String
file
=
file
Handler
Service
.
getRelativePath
(
response
.
getContent
());
imgUrls
.
clear
();
imgUrls
.
add
(
file
);
model
.
addAttribute
(
"imgurls"
,
imgUrls
);
...
...
server/src/main/java/cn/keking/service/impl/SimTextFilePreviewImpl.java
View file @
342c391a
package
cn
.
keking
.
service
.
impl
;
import
cn.keking.model.FileAttribute
;
import
cn.keking.model.FileType
;
import
cn.keking.model.ReturnResponse
;
import
cn.keking.service.FilePreview
;
import
cn.keking.utils.DownloadUtils
;
...
...
@@ -13,7 +12,6 @@ import org.springframework.util.Base64Utils;
import
java.io.File
;
import
java.io.IOException
;
import
java.nio.charset.StandardCharsets
;
import
java.nio.file.Files
;
/**
* Created by kl on 2018/1/17.
...
...
@@ -22,8 +20,10 @@ import java.nio.file.Files;
@Service
public
class
SimTextFilePreviewImpl
implements
FilePreview
{
private
final
DownloadUtils
downloadUtils
;
public
static
final
String
TEXT_TYPE
=
"textType"
;
public
static
final
String
DEFAULT_TEXT_TYPE
=
"simText"
;
private
final
DownloadUtils
downloadUtils
;
public
SimTextFilePreviewImpl
(
DownloadUtils
downloadUtils
)
{
this
.
downloadUtils
=
downloadUtils
;
...
...
server/src/main/java/cn/keking/service/impl/XmlFilePreviewImpl.java
View file @
342c391a
...
...
@@ -5,6 +5,8 @@ import cn.keking.service.FilePreview;
import
org.springframework.stereotype.Service
;
import
org.springframework.ui.Model
;
import
static
com
.
sun
.
glass
.
ui
.
Clipboard
.
TEXT_TYPE
;
/**
* @author kl (http://kailing.pub)
* @since 2020/12/25
...
...
server/src/main/java/cn/keking/utils/DownloadUtils.java
View file @
342c391a
...
...
@@ -5,7 +5,7 @@ import cn.keking.hutool.URLUtil;
import
cn.keking.model.FileAttribute
;
import
cn.keking.model.FileType
;
import
cn.keking.model.ReturnResponse
;
import
cn.keking.service.File
PreviewCommon
Service
;
import
cn.keking.service.File
Handler
Service
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Component
;
...
...
@@ -21,50 +21,48 @@ import java.util.UUID;
@Component
public
class
DownloadUtils
{
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
DownloadUtils
.
class
);
private
final
static
Logger
logger
=
LoggerFactory
.
getLogger
(
DownloadUtils
.
class
);
private
final
String
fileDir
=
ConfigConstants
.
getFileDir
();
private
final
FilePreviewCommonService
filePreviewCommonService
;
public
DownloadUtils
(
FilePreviewCommonService
filePreviewCommonService
)
{
this
.
filePreviewCommonService
=
filePreviewCommonService
;
}
private
static
final
String
URL_PARAM_FTP_USERNAME
=
"ftp.username"
;
private
static
final
String
URL_PARAM_FTP_PASSWORD
=
"ftp.password"
;
private
static
final
String
URL_PARAM_FTP_CONTROL_ENCODING
=
"ftp.control.encoding"
;
private
final
FileHandlerService
fileHandlerService
;
public
DownloadUtils
(
FileHandlerService
fileHandlerService
)
{
this
.
fileHandlerService
=
fileHandlerService
;
}
/**
* @param fileAttribute fileAttribute
* @param fileName 文件名
* @param fileName
文件名
* @return 本地文件绝对路径
*/
public
ReturnResponse
<
String
>
downLoad
(
FileAttribute
fileAttribute
,
String
fileName
)
{
public
ReturnResponse
<
String
>
downLoad
(
FileAttribute
fileAttribute
,
String
fileName
)
{
String
urlStr
=
fileAttribute
.
getUrl
();
String
type
=
fileAttribute
.
getSuffix
();
ReturnResponse
<
String
>
response
=
new
ReturnResponse
<>(
0
,
"下载成功!!!"
,
""
);
UUID
uuid
=
UUID
.
randomUUID
();
if
(
null
==
fileName
)
{
fileName
=
uuid
+
"."
+
type
;
fileName
=
uuid
+
"."
+
type
;
}
else
{
// 文件后缀不一致时,以type为准(针对simText【将类txt文件转为txt】)
fileName
=
fileName
.
replace
(
fileName
.
substring
(
fileName
.
lastIndexOf
(
"."
)
+
1
),
type
);
}
String
realPath
=
fileDir
+
fileName
;
File
dirFile
=
new
File
(
fileDir
);
if
(!
dirFile
.
exists
())
{
dirFile
.
mkdirs
(
);
if
(!
dirFile
.
exists
()
&&
!
dirFile
.
mkdirs
()
)
{
logger
.
error
(
"创建目录【{}】失败,可能是权限不够,请检查"
,
fileDir
);
}
try
{
URL
url
=
new
URL
(
urlStr
);
if
(
url
.
getProtocol
()
!=
null
&&
(
url
.
getProtocol
().
toLowerCase
().
startsWith
(
"file"
)
||
url
.
getProtocol
().
toLowerCase
().
startsWith
(
"http"
)))
{
if
(
url
.
getProtocol
()
!=
null
&&
(
url
.
getProtocol
().
toLowerCase
().
startsWith
(
"file"
)
||
url
.
getProtocol
().
toLowerCase
().
startsWith
(
"http"
)))
{
byte
[]
bytes
=
getBytesFromUrl
(
urlStr
);
OutputStream
os
=
new
FileOutputStream
(
realPath
);
saveBytesToOutStream
(
bytes
,
os
);
}
else
if
(
url
.
getProtocol
()
!=
null
&&
"ftp"
.
equalsIgnoreCase
(
url
.
getProtocol
()))
{
String
ftpUsername
=
file
PreviewCommon
Service
.
getUrlParameterReg
(
fileAttribute
.
getUrl
(),
URL_PARAM_FTP_USERNAME
);
String
ftpPassword
=
file
PreviewCommon
Service
.
getUrlParameterReg
(
fileAttribute
.
getUrl
(),
URL_PARAM_FTP_PASSWORD
);
String
ftpControlEncoding
=
file
PreviewCommon
Service
.
getUrlParameterReg
(
fileAttribute
.
getUrl
(),
URL_PARAM_FTP_CONTROL_ENCODING
);
String
ftpUsername
=
file
Handler
Service
.
getUrlParameterReg
(
fileAttribute
.
getUrl
(),
URL_PARAM_FTP_USERNAME
);
String
ftpPassword
=
file
Handler
Service
.
getUrlParameterReg
(
fileAttribute
.
getUrl
(),
URL_PARAM_FTP_PASSWORD
);
String
ftpControlEncoding
=
file
Handler
Service
.
getUrlParameterReg
(
fileAttribute
.
getUrl
(),
URL_PARAM_FTP_CONTROL_ENCODING
);
FtpUtils
.
download
(
fileAttribute
.
getUrl
(),
realPath
,
ftpUsername
,
ftpPassword
,
ftpControlEncoding
);
}
else
{
response
.
setCode
(
1
);
...
...
@@ -73,8 +71,8 @@ public class DownloadUtils {
}
response
.
setContent
(
realPath
);
response
.
setMsg
(
fileName
);
if
(
FileType
.
simText
.
equals
(
fileAttribute
.
getType
()))
{
convertTextPlainFileCharsetToUtf8
(
realPath
);
if
(
FileType
.
simText
.
equals
(
fileAttribute
.
getType
()))
{
this
.
convertTextPlainFileCharsetToUtf8
(
realPath
);
}
return
response
;
}
catch
(
IOException
e
)
{
...
...
@@ -92,17 +90,15 @@ public class DownloadUtils {
public
byte
[]
getBytesFromUrl
(
String
urlStr
)
throws
IOException
{
InputStream
is
=
getInputStreamFromUrl
(
urlStr
);
if
(
is
!=
null
)
{
return
getBytesFromStream
(
is
);
}
else
{
if
(
is
==
null
)
{
urlStr
=
URLUtil
.
normalize
(
urlStr
,
true
,
true
);
is
=
getInputStreamFromUrl
(
urlStr
);
if
(
is
==
null
)
{
logger
.
error
(
"文件下载异常:url:{}"
,
urlStr
);
throw
new
IOException
(
"文件下载异常:url:"
+
urlStr
);
}
return
getBytesFromStream
(
is
);
}
return
getBytesFromStream
(
is
);
}
public
void
saveBytesToOutStream
(
byte
[]
b
,
OutputStream
os
)
throws
IOException
{
...
...
@@ -127,7 +123,7 @@ public class DownloadUtils {
private
byte
[]
getBytesFromStream
(
InputStream
is
)
throws
IOException
{
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
byte
[]
buffer
=
new
byte
[
1024
];
int
len
=
0
;
int
len
;
while
((
len
=
is
.
read
(
buffer
))
!=
-
1
)
{
baos
.
write
(
buffer
,
0
,
len
);
}
...
...
@@ -137,41 +133,37 @@ public class DownloadUtils {
return
b
;
}
/**
* 转换文本文件编码为utf8
* 探测源文件编码,探测到编码切不为utf8则进行转码
* @param filePath 文件路径
*/
private
static
void
convertTextPlainFileCharsetToUtf8
(
String
filePath
)
throws
IOException
{
File
sourceFile
=
new
File
(
filePath
);
if
(
sourceFile
.
exists
()
&&
sourceFile
.
isFile
()
&&
sourceFile
.
canRead
())
{
String
encoding
=
null
;
try
{
FileCharsetDetector
.
Observer
observer
=
FileCharsetDetector
.
guessFileEncoding
(
sourceFile
);
// 为准确探测到编码,不适用猜测的编码
encoding
=
observer
.
isFound
()?
observer
.
getEncoding
():
null
;
// 为准确探测到编码,可以考虑使用GBK 大部分文件都是windows系统产生的
}
catch
(
IOException
e
)
{
// 编码探测失败,
e
.
printStackTrace
();
}
if
(
encoding
!=
null
&&
!
"UTF-8"
.
equals
(
encoding
)){
// 不为utf8,进行转码
File
tmpUtf8File
=
new
File
(
filePath
+
".utf8"
);
Writer
writer
=
new
OutputStreamWriter
(
new
FileOutputStream
(
tmpUtf8File
),
StandardCharsets
.
UTF_8
);
Reader
reader
=
new
BufferedReader
(
new
InputStreamReader
(
new
FileInputStream
(
sourceFile
),
encoding
));
char
[]
buf
=
new
char
[
1024
];
int
read
;
while
((
read
=
reader
.
read
(
buf
))
>
0
){
writer
.
write
(
buf
,
0
,
read
);
/**
* 转换文本文件编码为utf8
* 探测源文件编码,探测到编码切不为utf8则进行转码
*
* @param filePath 文件路径
*/
private
void
convertTextPlainFileCharsetToUtf8
(
String
filePath
)
throws
IOException
{
File
sourceFile
=
new
File
(
filePath
);
if
(
sourceFile
.
exists
()
&&
sourceFile
.
isFile
()
&&
sourceFile
.
canRead
())
{
String
encoding
=
FileUtils
.
getFileEncode
(
filePath
);
if
(!
FileUtils
.
DEFAULT_FILE_ENCODING
.
equals
(
encoding
))
{
// 不为utf8,进行转码
File
tmpUtf8File
=
new
File
(
filePath
+
".utf8"
);
Writer
writer
=
new
OutputStreamWriter
(
new
FileOutputStream
(
tmpUtf8File
),
StandardCharsets
.
UTF_8
);
Reader
reader
=
new
BufferedReader
(
new
InputStreamReader
(
new
FileInputStream
(
sourceFile
),
encoding
));
char
[]
buf
=
new
char
[
1024
];
int
read
;
while
((
read
=
reader
.
read
(
buf
))
>
0
)
{
writer
.
write
(
buf
,
0
,
read
);
}
reader
.
close
();
writer
.
close
();
// 删除源文件
if
(!
sourceFile
.
delete
())
{
logger
.
error
(
"源文件【{}】删除失败,请检查文件目录权限!"
,
filePath
);
}
// 重命名
if
(
tmpUtf8File
.
renameTo
(
sourceFile
))
{
logger
.
error
(
"临时文件【{}】重命名失败,请检查文件路径权限!"
,
tmpUtf8File
.
getPath
());
}
}
}
reader
.
close
();
writer
.
close
();
// 删除源文件
sourceFile
.
delete
();
// 重命名
tmpUtf8File
.
renameTo
(
sourceFile
);
}
}
}
}
server/src/main/java/cn/keking/utils/FileCharsetDetector.java
deleted
100644 → 0
View file @
f2d929e6
package
cn
.
keking
.
utils
;
import
java.io.BufferedInputStream
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.FileNotFoundException
;
import
java.io.IOException
;
import
org.mozilla.intl.chardet.nsDetector
;
import
org.mozilla.intl.chardet.nsICharsetDetectionObserver
;
/**
* 文本文件编码探测工具类
*
* @author HWliao
* @date 2017-12-24
*/
public
class
FileCharsetDetector
{
/**
* 传入一个文件(File)对象,检查文件编码
*
* @param file File对象实例
* @return 文件编码,若无,则返回null
* @throws FileNotFoundException
* @throws IOException
*/
public
static
Observer
guessFileEncoding
(
File
file
)
throws
FileNotFoundException
,
IOException
{
return
guessFileEncoding
(
file
,
new
nsDetector
());
}
/**
* <pre>
* 获取文件的编码
* @param file
* File对象实例
* @param languageHint
* 语言提示区域代码 @see #nsPSMDetector ,取值如下:
* 1 : Japanese
* 2 : Chinese
* 3 : Simplified Chinese
* 4 : Traditional Chinese
* 5 : Korean
* 6 : Dont know(default)
* </pre>
*
* @return 文件编码,eg:UTF-8,GBK,GB2312形式(不确定的时候,返回可能的字符编码序列);若无,则返回null
* @throws FileNotFoundException
* @throws IOException
*/
public
static
Observer
guessFileEncoding
(
File
file
,
int
languageHint
)
throws
FileNotFoundException
,
IOException
{
return
guessFileEncoding
(
file
,
new
nsDetector
(
languageHint
));
}
/**
* 获取文件的编码
*
* @param file
* @param det
* @return
* @throws FileNotFoundException
* @throws IOException
*/
private
static
Observer
guessFileEncoding
(
File
file
,
nsDetector
det
)
throws
FileNotFoundException
,
IOException
{
// new Observer
Observer
observer
=
new
Observer
();
// set Observer
// The Notify() will be called when a matching charset is found.
det
.
Init
(
observer
);
BufferedInputStream
imp
=
new
BufferedInputStream
(
new
FileInputStream
(
file
));
byte
[]
buf
=
new
byte
[
1024
];
int
len
;
boolean
done
=
false
;
boolean
isAscii
=
false
;
while
((
len
=
imp
.
read
(
buf
,
0
,
buf
.
length
))
!=
-
1
)
{
// Check if the stream is only ascii.
isAscii
=
det
.
isAscii
(
buf
,
len
);
if
(
isAscii
)
{
break
;
}
// DoIt if non-ascii and not done yet.
done
=
det
.
DoIt
(
buf
,
len
,
false
);
if
(
done
)
{
break
;
}
}
imp
.
close
();
det
.
DataEnd
();
if
(
isAscii
)
{
observer
.
encoding
=
"ASCII"
;
observer
.
found
=
true
;
}
if
(!
observer
.
isFound
())
{
String
[]
prob
=
det
.
getProbableCharsets
();
// // 这里将可能的字符集组合起来返回
// for (int i = 0; i < prob.length; i++) {
// if (i == 0) {
// encoding = prob[i];
// } else {
// encoding += "," + prob[i];
// }
// }
if
(
prob
.
length
>
0
)
{
// 在没有发现情况下,去第一个可能的编码
observer
.
encoding
=
prob
[
0
];
}
else
{
observer
.
encoding
=
null
;
}
}
return
observer
;
}
/**
* @author liaohongwei
* @Description: 文件字符编码观察者, 但判断出字符编码时候调用
* @date 2016年6月20日 下午2:27:06
*/
public
static
class
Observer
implements
nsICharsetDetectionObserver
{
/**
* @Fields encoding : 字符编码
*/
private
String
encoding
=
null
;
/**
* @Fields found : 是否找到字符集
*/
private
boolean
found
=
false
;
@Override
public
void
Notify
(
String
charset
)
{
this
.
encoding
=
charset
;
this
.
found
=
true
;
}
public
String
getEncoding
()
{
return
encoding
;
}
public
boolean
isFound
()
{
return
found
;
}
@Override
public
String
toString
()
{
return
"Observer [encoding="
+
encoding
+
", found="
+
found
+
"]"
;
}
}
}
server/src/main/java/cn/keking/utils/
DeleteFileUtil
.java
→
server/src/main/java/cn/keking/utils/
FileUtils
.java
View file @
342c391a
package
cn
.
keking
.
utils
;
import
cpdetector.CharsetPrinter
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.Objects
;
public
class
DeleteFileUtil
{
public
class
FileUtils
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
DeleteFileUtil
.
class
);
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
FileUtils
.
class
);
public
static
final
String
DEFAULT_FILE_ENCODING
=
"UTF-8"
;
/**
* 删除单个文件
...
...
@@ -17,7 +21,7 @@ public class DeleteFileUtil {
* 要删除的文件的文件名
* @return 单个文件删除成功返回true,否则返回false
*/
public
static
boolean
deleteFile
(
String
fileName
)
{
public
static
boolean
deleteFile
ByName
(
String
fileName
)
{
File
file
=
new
File
(
fileName
);
// 如果文件路径所对应的文件存在,并且是一个文件,则直接删除
if
(
file
.
exists
()
&&
file
.
isFile
())
{
...
...
@@ -34,6 +38,36 @@ public class DeleteFileUtil {
}
}
/**
* 判断文件编码格式
*
* @param filePath 绝对路径
* @return 编码格式
*/
public
static
String
getFileEncode
(
String
filePath
)
{
File
file
=
new
File
(
filePath
);
CharsetPrinter
cp
=
new
CharsetPrinter
();
try
{
String
encoding
=
cp
.
guessEncoding
(
file
);
LOGGER
.
info
(
"检测到文件【{}】编码: {}"
,
filePath
,
encoding
);
return
encoding
;
}
catch
(
IOException
e
)
{
LOGGER
.
warn
(
"文件编码获取失败,采用默认的编码格式:UTF-8"
,
e
);
return
DEFAULT_FILE_ENCODING
;
}
}
/**
* 根据文件路径删除文件
*
* @param filePath 绝对路径
*/
public
static
void
deleteFileByPath
(
String
filePath
)
{
File
file
=
new
File
(
filePath
);
if
(
file
.
exists
()
&&
!
file
.
delete
())
{
LOGGER
.
warn
(
"压缩包源文件删除失败:{}!"
,
filePath
);
}
}
/**
* 删除目录及目录下的文件
...
...
@@ -59,20 +93,20 @@ public class DeleteFileUtil {
for
(
int
i
=
0
;
i
<
Objects
.
requireNonNull
(
files
).
length
;
i
++)
{
// 删除子文件
if
(
files
[
i
].
isFile
())
{
flag
=
DeleteFileUtil
.
deleteFil
e
(
files
[
i
].
getAbsolutePath
());
flag
=
FileUtils
.
deleteFileByNam
e
(
files
[
i
].
getAbsolutePath
());
if
(!
flag
)
{
break
;
}
}
else
if
(
files
[
i
].
isDirectory
())
{
// 删除子目录
flag
=
DeleteFileUtil
.
deleteDirectory
(
files
[
i
].
getAbsolutePath
());
flag
=
FileUtils
.
deleteDirectory
(
files
[
i
].
getAbsolutePath
());
if
(!
flag
)
{
break
;
}
}
}
dirFile
.
delete
();
if
(!
flag
)
{
if
(!
dirFile
.
delete
()
||
!
flag
)
{
LOGGER
.
info
(
"删除目录失败!"
);
return
false
;
}
...
...
server/src/main/java/cn/keking/utils/PdfUtils.java
View file @
342c391a
package
cn
.
keking
.
utils
;
import
cn.keking.service.File
PreviewCommon
Service
;
import
cn.keking.service.File
Handler
Service
;
import
org.apache.pdfbox.pdmodel.PDDocument
;
import
org.apache.pdfbox.rendering.ImageType
;
import
org.apache.pdfbox.rendering.PDFRenderer
;
...
...
@@ -23,18 +23,18 @@ public class PdfUtils {
private
final
Logger
logger
=
LoggerFactory
.
getLogger
(
PdfUtils
.
class
);
private
final
File
PreviewCommonService
filePreviewCommon
Service
;
private
final
File
HandlerService
fileHandler
Service
;
@Value
(
"${server.tomcat.uri-encoding:UTF-8}"
)
private
String
uriEncoding
;
public
PdfUtils
(
File
PreviewCommonService
filePreviewCommon
Service
)
{
this
.
file
PreviewCommonService
=
filePreviewCommon
Service
;
public
PdfUtils
(
File
HandlerService
fileHandler
Service
)
{
this
.
file
HandlerService
=
fileHandler
Service
;
}
public
List
<
String
>
pdf2jpg
(
String
pdfFilePath
,
String
pdfName
,
String
baseUrl
)
{
List
<
String
>
imageUrls
=
new
ArrayList
<>();
Integer
imageCount
=
file
PreviewCommon
Service
.
getConvertedPdfImage
(
pdfFilePath
);
Integer
imageCount
=
file
Handler
Service
.
getConvertedPdfImage
(
pdfFilePath
);
String
imageFileSuffix
=
".jpg"
;
String
pdfFolder
=
pdfName
.
substring
(
0
,
pdfName
.
length
()
-
4
);
String
urlPrefix
=
null
;
...
...
@@ -70,7 +70,7 @@ public class PdfUtils {
imageUrls
.
add
(
urlPrefix
+
"/"
+
pageIndex
+
imageFileSuffix
);
}
doc
.
close
();
file
PreviewCommon
Service
.
addConvertedPdfImage
(
pdfFilePath
,
pageCount
);
file
Handler
Service
.
addConvertedPdfImage
(
pdfFilePath
,
pageCount
);
}
catch
(
IOException
e
)
{
logger
.
error
(
"Convert pdf to jpg exception, pdfFilePath:{}"
,
pdfFilePath
,
e
);
}
...
...
server/src/main/java/cn/keking/utils/ShedulerClean.java
View file @
342c391a
...
...
@@ -31,7 +31,7 @@ public class ShedulerClean {
public
void
clean
()
{
logger
.
info
(
"Cache clean start"
);
cacheService
.
cleanCache
();
DeleteFileUtil
.
deleteDirectory
(
fileDir
);
FileUtils
.
deleteDirectory
(
fileDir
);
logger
.
info
(
"Cache clean end"
);
}
}
server/src/main/java/cn/keking/web/controller/OnlinePreviewController.java
View file @
342c391a
...
...
@@ -6,7 +6,7 @@ import cn.keking.service.FilePreviewFactory;
import
cn.keking.service.cache.CacheService
;
import
cn.keking.utils.DownloadUtils
;
import
cn.keking.service.File
PreviewCommon
Service
;
import
cn.keking.service.File
Handler
Service
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Controller
;
...
...
@@ -32,12 +32,12 @@ public class OnlinePreviewController {
private
final
FilePreviewFactory
previewFactory
;
private
final
CacheService
cacheService
;
private
final
File
PreviewCommonService
filePreviewCommon
Service
;
private
final
File
HandlerService
fileHandler
Service
;
private
final
DownloadUtils
downloadUtils
;
public
OnlinePreviewController
(
FilePreviewFactory
filePreviewFactory
,
File
PreviewCommonService
filePreviewCommon
Service
,
CacheService
cacheService
,
DownloadUtils
downloadUtils
)
{
public
OnlinePreviewController
(
FilePreviewFactory
filePreviewFactory
,
File
HandlerService
fileHandler
Service
,
CacheService
cacheService
,
DownloadUtils
downloadUtils
)
{
this
.
previewFactory
=
filePreviewFactory
;
this
.
file
PreviewCommonService
=
filePreviewCommon
Service
;
this
.
file
HandlerService
=
fileHandler
Service
;
this
.
cacheService
=
cacheService
;
this
.
downloadUtils
=
downloadUtils
;
}
...
...
@@ -45,7 +45,7 @@ public class OnlinePreviewController {
@RequestMapping
(
value
=
"/onlinePreview"
)
public
String
onlinePreview
(
String
url
,
Model
model
,
HttpServletRequest
req
)
{
FileAttribute
fileAttribute
=
file
PreviewCommon
Service
.
getFileAttribute
(
url
,
req
);
FileAttribute
fileAttribute
=
file
Handler
Service
.
getFileAttribute
(
url
,
req
);
FilePreview
filePreview
=
previewFactory
.
get
(
fileAttribute
);
logger
.
info
(
"预览文件url:{},previewType:{}"
,
url
,
fileAttribute
.
getType
());
return
filePreview
.
filePreviewHandle
(
url
,
model
,
fileAttribute
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment