Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
midjourney-proxy
Overview
Overview
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
徐少华
midjourney-proxy
Commits
278fbfa1
Commit
278fbfa1
authored
Oct 12, 2018
by
songxiang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ZIP打包下载支持分大小打包
parent
bec5df1d
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
139 additions
and
81 deletions
+139
-81
UploadResultInfo.java
.../main/java/com/pcloud/common/entity/UploadResultInfo.java
+13
-0
FileUtils.java
...mmon/src/main/java/com/pcloud/common/utils/FileUtils.java
+48
-56
CompressUtils.java
.../main/java/com/pcloud/common/utils/zip/CompressUtils.java
+78
-25
No files found.
pcloud-common/src/main/java/com/pcloud/common/entity/UploadResultInfo.java
View file @
278fbfa1
...
@@ -9,6 +9,8 @@ package com.pcloud.common.entity;
...
@@ -9,6 +9,8 @@ package com.pcloud.common.entity;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
com.fasterxml.jackson.annotation.JsonInclude
;
import
io.swagger.annotations.ApiModelProperty
;
/**
/**
*
*
* @描述:
* @描述:
...
@@ -107,6 +109,9 @@ public class UploadResultInfo extends BaseEntity {
...
@@ -107,6 +109,9 @@ public class UploadResultInfo extends BaseEntity {
*/
*/
private
String
m3u8Url
;
private
String
m3u8Url
;
@ApiModelProperty
(
"子文件数量"
)
private
int
fileItemCount
;
public
UploadResultInfo
()
{
public
UploadResultInfo
()
{
super
();
super
();
}
}
...
@@ -152,6 +157,14 @@ public class UploadResultInfo extends BaseEntity {
...
@@ -152,6 +157,14 @@ public class UploadResultInfo extends BaseEntity {
this
.
url
=
url
;
this
.
url
=
url
;
}
}
public
int
getFileItemCount
()
{
return
fileItemCount
;
}
public
void
setFileItemCount
(
int
fileItemCount
)
{
this
.
fileItemCount
=
fileItemCount
;
}
public
String
getM3u8Url
()
{
public
String
getM3u8Url
()
{
return
m3u8Url
;
return
m3u8Url
;
}
}
...
...
pcloud-common/src/main/java/com/pcloud/common/utils/FileUtils.java
View file @
278fbfa1
...
@@ -21,6 +21,7 @@ import java.util.List;
...
@@ -21,6 +21,7 @@ import java.util.List;
import
java.util.UUID
;
import
java.util.UUID
;
import
java.util.regex.Matcher
;
import
java.util.regex.Matcher
;
import
java.util.regex.Pattern
;
import
java.util.regex.Pattern
;
import
java.util.stream.Stream
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.codec.binary.Base64
;
import
org.apache.commons.io.IOUtils
;
import
org.apache.commons.io.IOUtils
;
...
@@ -98,58 +99,58 @@ public class FileUtils {
...
@@ -98,58 +99,58 @@ public class FileUtils {
/**
/**
* PDF文件格式
* PDF文件格式
*/
*/
public
static
final
String
[]
PDF_GATHER
=
{
"PDF"
};
public
static
final
String
[]
PDF_GATHER
=
{
"PDF"
};
/**
/**
* XML文件格式
* XML文件格式
*/
*/
public
static
final
String
[]
XML_GATHER
=
{
"XML"
};
public
static
final
String
[]
XML_GATHER
=
{
"XML"
};
/**
/**
* 图片文件格式
* 图片文件格式
*/
*/
public
static
final
String
[]
IMAGE_GATHER
=
{
"BMP"
,
"JPG"
,
"GIF"
,
"PNG"
,
"PCX"
,
"TIF"
,
"JPEG"
,
"SVG"
};
public
static
final
String
[]
IMAGE_GATHER
=
{
"BMP"
,
"JPG"
,
"GIF"
,
"PNG"
,
"PCX"
,
"TIF"
,
"JPEG"
,
"SVG"
};
/**
/**
* 音頻文件格式 【"LRC" 为歌词字幕(这里作为音頻文件上传)】
* 音頻文件格式 【"LRC" 为歌词字幕(这里作为音頻文件上传)】
*/
*/
public
static
final
String
[]
AUDIO_GATHER
=
{
"AMR"
,
"MP3"
,
"WMA"
,
"WAV"
,
"AAC"
,
"APE"
,
"M4A"
};
public
static
final
String
[]
AUDIO_GATHER
=
{
"AMR"
,
"MP3"
,
"WMA"
,
"WAV"
,
"AAC"
,
"APE"
,
"M4A"
};
/**
/**
* 視頻文件格式 【"SRT", "SSA", "SMI", "SUB" 为视频“外挂型”字幕(这里作为视频文件上传)】
* 視頻文件格式 【"SRT", "SSA", "SMI", "SUB" 为视频“外挂型”字幕(这里作为视频文件上传)】
*/
*/
public
static
final
String
[]
VIDEO_GATHER
=
{
"MPG"
,
"MPEG"
,
"AVI"
,
"MOV"
,
"ASF"
,
"WMV"
,
"NAVI"
,
"3GP"
,
"MKV"
,
public
static
final
String
[]
VIDEO_GATHER
=
{
"MPG"
,
"MPEG"
,
"AVI"
,
"MOV"
,
"ASF"
,
"WMV"
,
"NAVI"
,
"3GP"
,
"MKV"
,
"FLV"
,
"F4V"
,
"RMVB"
,
"RM"
,
"MP4"
,
"SRT"
,
"SSA"
,
"SMI"
,
"SUB"
,
"ASX"
,
"M3U8"
};
"FLV"
,
"F4V"
,
"RMVB"
,
"RM"
,
"MP4"
,
"SRT"
,
"SSA"
,
"SMI"
,
"SUB"
,
"ASX"
,
"M3U8"
};
/**
/**
* 压缩包文件格式
* 压缩包文件格式
*/
*/
public
static
final
String
[]
COMPRESS_GATHER
=
{
"RAR"
,
"ZIP"
};
public
static
final
String
[]
COMPRESS_GATHER
=
{
"RAR"
,
"ZIP"
};
/**
/**
* 文件格式
* 文件格式
*/
*/
public
static
final
String
[]
TEXT_GATHER
=
{
"TXT"
,
"LRC"
};
public
static
final
String
[]
TEXT_GATHER
=
{
"TXT"
,
"LRC"
};
/**
/**
* 编辑器格式
* 编辑器格式
*/
*/
public
static
final
String
[]
EDITOR_GATHER
=
{
"DOC"
,
"DOCX"
,
"XLS"
,
"XLSX"
,
"PPT"
,
"PPTX"
};
public
static
final
String
[]
EDITOR_GATHER
=
{
"DOC"
,
"DOCX"
,
"XLS"
,
"XLSX"
,
"PPT"
,
"PPTX"
};
/**
/**
* word格式
* word格式
*/
*/
public
static
final
String
[]
WORD_GATHER
=
{
"DOC"
,
"DOCX"
};
public
static
final
String
[]
WORD_GATHER
=
{
"DOC"
,
"DOCX"
};
/**
/**
* excel格式
* excel格式
*/
*/
public
static
final
String
[]
EXCEL_GATHER
=
{
"XLS"
,
"XLSX"
,
"XLSM"
,
"XLT"
,
"XLTX"
,
"XLTM"
,
"CSV"
};
public
static
final
String
[]
EXCEL_GATHER
=
{
"XLS"
,
"XLSX"
,
"XLSM"
,
"XLT"
,
"XLTX"
,
"XLTM"
,
"CSV"
};
/**
/**
* PPT格式
* PPT格式
*/
*/
public
static
final
String
[]
PPT_GATHER
=
{
"PPT"
,
"PPTX"
};
public
static
final
String
[]
PPT_GATHER
=
{
"PPT"
,
"PPTX"
};
/**
/**
* 根据文件类型获取文件分类
* 根据文件类型获取文件分类
...
@@ -199,8 +200,7 @@ public class FileUtils {
...
@@ -199,8 +200,7 @@ public class FileUtils {
/**
/**
* 传入文件夹路径,该方法能够实现创建整个路径
* 传入文件夹路径,该方法能够实现创建整个路径
*
*
* @param path
* @param path 文件夹路径,不包含文件名称及后缀名
* 文件夹路径,不包含文件名称及后缀名
*/
*/
public
static
boolean
isDir
(
String
filePath
)
{
public
static
boolean
isDir
(
String
filePath
)
{
if
(
StringUtil
.
isEmpty
(
filePath
))
{
if
(
StringUtil
.
isEmpty
(
filePath
))
{
...
@@ -390,12 +390,17 @@ public class FileUtils {
...
@@ -390,12 +390,17 @@ public class FileUtils {
if
(
StringUtil
.
isEmpty
(
fileName
))
{
if
(
StringUtil
.
isEmpty
(
fileName
))
{
return
null
;
return
null
;
}
}
try
{
String
regEx
=
"[*/\\\\:?\"<|>\\s+%#&=.()]"
;
String
regEx
=
"[*/\\\\:?\"<|>\\s+%#&=.()]"
;
Pattern
p
=
Pattern
.
compile
(
regEx
);
Pattern
p
=
Pattern
.
compile
(
regEx
);
Matcher
m
=
p
.
matcher
(
fileName
);
Matcher
m
=
p
.
matcher
(
fileName
);
String
result
=
m
.
replaceAll
(
""
).
trim
();
String
result
=
m
.
replaceAll
(
""
).
trim
();
// 文件名称过长的话,限制40个字
// 文件名称过长的话,限制40个字
return
result
.
length
()
>
40
?
result
.
substring
(
0
,
40
)
:
result
;
return
result
.
length
()
>
40
?
result
.
substring
(
0
,
40
)
:
result
;
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"【文件API】格式化文件名称.[formatName]:"
+
e
.
getMessage
(),
e
);
return
UUIDUitl
.
taskName
();
}
}
}
/**
/**
...
@@ -447,8 +452,7 @@ public class FileUtils {
...
@@ -447,8 +452,7 @@ public class FileUtils {
/**
/**
* 根据路径删除指定的目录或文件,无论存在与否
* 根据路径删除指定的目录或文件,无论存在与否
*
*
* @param sPath
* @param sPath 要删除的目录或文件
* 要删除的目录或文件
* @return 删除成功返回 true,否则返回 false。
* @return 删除成功返回 true,否则返回 false。
*/
*/
public
static
boolean
deleteFolder
(
String
sPath
)
{
public
static
boolean
deleteFolder
(
String
sPath
)
{
...
@@ -473,8 +477,7 @@ public class FileUtils {
...
@@ -473,8 +477,7 @@ public class FileUtils {
/**
/**
* 删除单个文件
* 删除单个文件
*
*
* @param sPath
* @param sPath 被删除文件的文件名
* 被删除文件的文件名
* @return 单个文件删除成功返回true,否则返回false
* @return 单个文件删除成功返回true,否则返回false
*/
*/
public
static
boolean
deleteFile
(
String
sPath
)
{
public
static
boolean
deleteFile
(
String
sPath
)
{
...
@@ -494,8 +497,7 @@ public class FileUtils {
...
@@ -494,8 +497,7 @@ public class FileUtils {
/**
/**
* 删除目录(文件夹)以及目录下的文件
* 删除目录(文件夹)以及目录下的文件
*
*
* @param sPath
* @param sPath 被删除目录的文件路径
* 被删除目录的文件路径
* @return 目录删除成功返回true,否则返回false
* @return 目录删除成功返回true,否则返回false
*/
*/
public
static
boolean
deleteDirectory
(
String
sPath
)
{
public
static
boolean
deleteDirectory
(
String
sPath
)
{
...
@@ -540,7 +542,7 @@ public class FileUtils {
...
@@ -540,7 +542,7 @@ public class FileUtils {
/**
/**
* 检查文件是否存在
* 检查文件是否存在
*
*
* @param p
ath
* @param fileP
ath
* @return
* @return
*/
*/
public
static
boolean
checkFile
(
String
filePath
)
{
public
static
boolean
checkFile
(
String
filePath
)
{
...
@@ -669,10 +671,8 @@ public class FileUtils {
...
@@ -669,10 +671,8 @@ public class FileUtils {
/**
/**
* 合并两个文件
* 合并两个文件
*
*
* @param outFile
* @param outFile 目标文件
* 目标文件
* @param leafFile 源文件
* @param files
* 源文件
*/
*/
public
static
void
mergeFiles
(
File
outFile
,
File
leafFile
)
{
public
static
void
mergeFiles
(
File
outFile
,
File
leafFile
)
{
FileOutputStream
fos
=
null
;
FileOutputStream
fos
=
null
;
...
@@ -689,7 +689,7 @@ public class FileUtils {
...
@@ -689,7 +689,7 @@ public class FileUtils {
fos
=
new
FileOutputStream
(
outFile
,
true
);
fos
=
new
FileOutputStream
(
outFile
,
true
);
fis
=
new
FileInputStream
(
leafFile
);
fis
=
new
FileInputStream
(
leafFile
);
int
len
=
0
;
int
len
=
0
;
for
(
byte
[]
buf
=
new
byte
[
1024
*
1024
];
(
len
=
fis
.
read
(
buf
))
!=
-
1
;
)
{
for
(
byte
[]
buf
=
new
byte
[
1024
*
1024
];
(
len
=
fis
.
read
(
buf
))
!=
-
1
;
)
{
fos
.
write
(
buf
,
0
,
len
);
fos
.
write
(
buf
,
0
,
len
);
}
}
}
catch
(
IOException
ioe
)
{
}
catch
(
IOException
ioe
)
{
...
@@ -708,10 +708,8 @@ public class FileUtils {
...
@@ -708,10 +708,8 @@ public class FileUtils {
/**
/**
* 合并多个文件
* 合并多个文件
*
*
* @param outFile
* @param outFile 输出文件,
* 输出文件,
* @param leafFiles 文件碎片集
* @param leafFile
* 文件碎片集
*/
*/
public
static
void
mergeFileList
(
File
outFile
,
List
<
File
>
leafFiles
)
{
public
static
void
mergeFileList
(
File
outFile
,
List
<
File
>
leafFiles
)
{
FileOutputStream
fos
=
null
;
FileOutputStream
fos
=
null
;
...
@@ -750,14 +748,11 @@ public class FileUtils {
...
@@ -750,14 +748,11 @@ public class FileUtils {
/**
/**
* 音频文件转换
* 音频文件转换
*
*
* @author PENG
* @param data 音频byte数组
* @param data
* @param sourExt 原始后缀
* 音频byte数组
* @param ext 新后缀
* @param sourExt
* 原始后缀
* @param ext
* 新后缀
* @return
* @return
* @author PENG
*/
*/
public
static
String
audioFormatConvert
(
byte
[]
data
,
String
sourExt
,
String
ext
)
{
public
static
String
audioFormatConvert
(
byte
[]
data
,
String
sourExt
,
String
ext
)
{
File
tmpdir
=
new
File
(
"tempdir/local"
);
File
tmpdir
=
new
File
(
"tempdir/local"
);
...
@@ -859,17 +854,21 @@ public class FileUtils {
...
@@ -859,17 +854,21 @@ public class FileUtils {
LOGGER
.
info
(
"【文件API】获取文本的内容8.<START>.[url]="
+
url
);
LOGGER
.
info
(
"【文件API】获取文本的内容8.<START>.[url]="
+
url
);
StringBuilder
result
=
new
StringBuilder
();
StringBuilder
result
=
new
StringBuilder
();
String
fileType
=
getFileType
(
url
);
String
fileType
=
getFileType
(
url
);
String
localFilePath
=
FilePathConst
.
TEXT_PATH
+
UUIDUitl
.
taskName
()
+
"."
+
fileType
;
String
localFilePath
=
url
;
if
(
url
.
startsWith
(
"http"
))
{
localFilePath
=
FilePathConst
.
TEXT_PATH
+
UUIDUitl
.
taskName
()
+
"."
+
fileType
;
downloadFileFromUrl
(
url
,
localFilePath
);
downloadFileFromUrl
(
url
,
localFilePath
);
}
try
{
try
{
List
<
String
>
lines
=
Files
.
readAllL
ines
(
Paths
.
get
(
localFilePath
),
StandardCharsets
.
UTF_8
);
Stream
<
String
>
lines
=
Files
.
l
ines
(
Paths
.
get
(
localFilePath
),
StandardCharsets
.
UTF_8
);
for
(
String
line
:
lines
)
{
lines
.
forEach
(
line
->
{
result
.
append
(
line
+
System
.
lineSeparator
());
result
.
append
(
line
+
System
.
lineSeparator
());
}
});
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"【文件工具】读取文件内容8.<ERROR>:"
+
e
.
getMessage
(),
e
);
LOGGER
.
error
(
"【文件工具】读取文件内容8.<ERROR>:"
+
e
.
getMessage
(),
e
);
}
}
finally
{
deleteFile
(
localFilePath
);
deleteFile
(
localFilePath
);
}
LOGGER
.
info
(
"【文件API】获取文本的内容8.<END>"
);
LOGGER
.
info
(
"【文件API】获取文本的内容8.<END>"
);
return
result
.
toString
();
return
result
.
toString
();
}
}
...
@@ -877,9 +876,8 @@ public class FileUtils {
...
@@ -877,9 +876,8 @@ public class FileUtils {
/**
/**
* 文件剪切,网络路径、按文件大小的百分比
* 文件剪切,网络路径、按文件大小的百分比
*
*
* @param inputFile
* @param url
* @param cutPercent
* @param percent 1~100的整数
* 1~100的整数
* @return 返回剪切后上传后的文件路径
* @return 返回剪切后上传后的文件路径
* @throws BizException
* @throws BizException
*/
*/
...
@@ -910,8 +908,7 @@ public class FileUtils {
...
@@ -910,8 +908,7 @@ public class FileUtils {
* 文件剪切,本地路径、按百分比
* 文件剪切,本地路径、按百分比
*
*
* @param inputFile
* @param inputFile
* @param cutPercent
* @param cutPercent 1~100的整数
* 1~100的整数
* @return 返回本地路径地址
* @return 返回本地路径地址
* @throws BizException
* @throws BizException
*/
*/
...
@@ -929,12 +926,8 @@ public class FileUtils {
...
@@ -929,12 +926,8 @@ public class FileUtils {
/**
/**
* 文件剪切
* 文件剪切
*
*
* @param inputFile
* @param inputFile 待剪切的文件
* 待剪切的文件
* @param cutLength 剪切长度(Byte)
* @param outputFile
* 剪切后的文件
* @param cutLength
* 剪切长度(Byte)
*/
*/
public
static
String
clipByLength
(
File
inputFile
,
long
cutLength
)
throws
BizException
{
public
static
String
clipByLength
(
File
inputFile
,
long
cutLength
)
throws
BizException
{
LOGGER
.
info
(
"【文件API】文件剪切.<START>.[cutLength]="
+
cutLength
);
LOGGER
.
info
(
"【文件API】文件剪切.<START>.[cutLength]="
+
cutLength
);
...
@@ -993,7 +986,7 @@ public class FileUtils {
...
@@ -993,7 +986,7 @@ public class FileUtils {
/**
/**
* 将文件转成base64 字符串
* 将文件转成base64 字符串
*
*
* @param path文件路径
* @param data
* @return *
* @return *
* @throws Exception
* @throws Exception
*/
*/
...
@@ -1079,8 +1072,7 @@ public class FileUtils {
...
@@ -1079,8 +1072,7 @@ public class FileUtils {
/**
/**
* 从输入流中获取数据
* 从输入流中获取数据
*
*
* @param inStream
* @param inStream 输入流
* 输入流
* @return
* @return
* @throws Exception
* @throws Exception
*/
*/
...
...
pcloud-common/src/main/java/com/pcloud/common/utils/zip/CompressUtils.java
View file @
278fbfa1
...
@@ -18,12 +18,16 @@ import org.slf4j.LoggerFactory;
...
@@ -18,12 +18,16 @@ import org.slf4j.LoggerFactory;
import
com.github.junrar.Archive
;
import
com.github.junrar.Archive
;
import
com.github.junrar.rarfile.FileHeader
;
import
com.github.junrar.rarfile.FileHeader
;
import
com.google.common.collect.Lists
;
import
com.pcloud.common.constant.OSConstant
;
import
com.pcloud.common.constant.OSConstant
;
import
com.pcloud.common.dto.CompressDTO
;
import
com.pcloud.common.dto.CompressDTO.CompressFileDTO
;
import
com.pcloud.common.entity.UploadResultInfo
;
import
com.pcloud.common.entity.UploadResultInfo
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.BizException
;
import
com.pcloud.common.exceptions.FileException
;
import
com.pcloud.common.exceptions.FileException
;
import
com.pcloud.common.utils.FileUtils
;
import
com.pcloud.common.utils.FileUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.LocalDateUtils
;
import
com.pcloud.common.utils.UUIDUitl
;
import
com.pcloud.common.utils.UUIDUitl
;
import
com.pcloud.common.utils.aliyun.OssUtils
;
import
com.pcloud.common.utils.aliyun.OssUtils
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.common.utils.string.StringUtil
;
...
@@ -51,11 +55,63 @@ public class CompressUtils {
...
@@ -51,11 +55,63 @@ public class CompressUtils {
private
static
String
ZIP_FILE_PATH
=
OSConstant
.
USERDIR
+
"/zip/"
;
private
static
String
ZIP_FILE_PATH
=
OSConstant
.
USERDIR
+
"/zip/"
;
/**
/**
* 分拆大小值
*/
private
static
long
CUT_SIZE
=
1
*
1024
*
1024
*
1024
;
/**
* 分批次打包,压缩文件集超过指定大小后,分多个包压缩,目前限定1个压缩包1G。
*
* @param compressDTO
* @return
* @throws BizException
*/
public
static
List
<
UploadResultInfo
>
zips
(
CompressDTO
compressDTO
)
throws
BizException
{
LOGGER
.
info
(
"【压缩】分批次打包文件.<START>.[compressDTO]="
+
compressDTO
);
if
(
compressDTO
==
null
)
{
return
null
;
}
List
<
CompressFileDTO
>
compressFileDTOs
=
compressDTO
.
getCompressFileDTOs
();
if
(
ListUtils
.
isEmpty
(
compressFileDTOs
))
{
return
null
;
}
List
<
UploadResultInfo
>
uploadResultInfos
=
Lists
.
newArrayList
();
List
<
String
[]>
fileUrlList
=
Lists
.
newArrayList
();
long
totalFileSize
=
0
;
int
size
=
compressFileDTOs
.
size
();
int
index
=
1
;
for
(
int
i
=
0
;
i
<
size
;
i
++)
{
CompressFileDTO
compressFileDTO
=
compressFileDTOs
.
get
(
i
);
totalFileSize
+=
compressFileDTO
.
getFileSize
();
fileUrlList
.
add
(
new
String
[]{
compressFileDTO
.
getFileName
(),
compressFileDTO
.
getFileUrl
()});
if
(
totalFileSize
>
CUT_SIZE
)
{
String
zipName
=
compressDTO
.
getCompressName
()
+
"_"
+
index
;
UploadResultInfo
uploadResultInfo
=
zip
(
fileUrlList
,
zipName
);
uploadResultInfo
.
setUrl
(
OssUtils
.
urlAddKeyLong2Short
(
uploadResultInfo
.
getUrl
()));
uploadResultInfo
.
setFileItemCount
(
fileUrlList
.
size
());
uploadResultInfos
.
add
(
uploadResultInfo
);
// 零时变量复位
totalFileSize
=
0
;
fileUrlList
=
Lists
.
newArrayList
();
index
++;
}
}
// 打包剩余总大小不足1G的文件
if
(
fileUrlList
.
size
()
>
0
)
{
UploadResultInfo
uploadResultInfo
=
zip
(
fileUrlList
,
compressDTO
.
getCompressName
()
+
"_"
+
index
);
uploadResultInfo
.
setUrl
(
OssUtils
.
urlAddKeyLong2Short
(
uploadResultInfo
.
getUrl
()));
uploadResultInfo
.
setFileItemCount
(
fileUrlList
.
size
());
uploadResultInfos
.
add
(
uploadResultInfo
);
}
LOGGER
.
info
(
"【压缩】分批次打包文件.<END>"
);
return
uploadResultInfos
;
}
/**
* 压缩文件
* 压缩文件
*
*
* @param fileUrlList
* @param fileUrlList String[0]=文件名称, String[1]=文件地址
* String[0]=文件名称, String[1]=文件地址
* @param zipName 压缩包的名称
* @param zipName
* @return
* @return
* @throws BizException
* @throws BizException
*/
*/
...
@@ -65,10 +121,13 @@ public class CompressUtils {
...
@@ -65,10 +121,13 @@ public class CompressUtils {
return
null
;
return
null
;
}
}
zipName
=
FileUtils
.
formatName
(
zipName
);
zipName
=
FileUtils
.
formatName
(
zipName
);
String
tempZipName
=
zipName
+
"_"
+
UUIDUitl
.
generateString
(
12
);
String
tempZipName
=
zipName
+
"_"
+
LocalDateUtils
.
getYmdhmss
();
String
zipFilePath
=
ZIP_FILE_PATH
+
tempZipName
+
".zip"
;
// 检查临时文件夹是否存在,不存在就创建
// 检查临时文件夹是否存在,不存在就创建
String
fileFolderPath
=
FILE_LOCAL_PATH
+
tempZipName
;
String
fileFolderPath
=
FILE_LOCAL_PATH
+
tempZipName
;
FileUtils
.
isDir
(
fileFolderPath
);
FileUtils
.
isDir
(
fileFolderPath
);
UploadResultInfo
uploadResultInfo
=
null
;
try
{
// 下载文件到文件夹中
// 下载文件到文件夹中
int
idx
=
1
;
int
idx
=
1
;
for
(
String
[]
files
:
fileUrlList
)
{
for
(
String
[]
files
:
fileUrlList
)
{
...
@@ -80,18 +139,18 @@ public class CompressUtils {
...
@@ -80,18 +139,18 @@ public class CompressUtils {
}
}
// 检查压缩包临时文件夹是否存在,不存在就创建
// 检查压缩包临时文件夹是否存在,不存在就创建
FileUtils
.
isDir
(
ZIP_FILE_PATH
);
FileUtils
.
isDir
(
ZIP_FILE_PATH
);
String
zipFilePath
=
ZIP_FILE_PATH
+
tempZipName
+
".zip"
;
try
{
CompressUtils
.
zip
(
fileFolderPath
,
zipFilePath
);
CompressUtils
.
zip
(
fileFolderPath
,
zipFilePath
);
// 上传文件到服务器中
uploadResultInfo
=
OssUtils
.
uploadLocalFile4CustomName
(
zipFilePath
,
zipName
);
uploadResultInfo
.
setFileName
(
zipName
);
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"【压缩】压缩失败,<ERROR>:"
+
e
.
getMessage
(),
e
);
LOGGER
.
error
(
"【压缩】压缩失败,<ERROR>:"
+
e
.
getMessage
(),
e
);
throw
new
FileException
(
FileException
.
ZIP_ERROR
,
"压缩失败!"
);
throw
new
FileException
(
FileException
.
ZIP_ERROR
,
"压缩失败!"
);
}
}
finally
{
// 上传文件到服务器中
UploadResultInfo
uploadResultInfo
=
OssUtils
.
uploadLocalFile4CustomName
(
zipFilePath
,
zipName
);
// 删除产生的文件
// 删除产生的文件
FileUtils
.
deleteDirectory
(
fileFolderPath
);
FileUtils
.
deleteDirectory
(
fileFolderPath
);
FileUtils
.
deleteFile
(
zipFilePath
);
FileUtils
.
deleteFile
(
zipFilePath
);
}
LOGGER
.
info
(
"【压缩】压缩文件.<END>"
);
LOGGER
.
info
(
"【压缩】压缩文件.<END>"
);
return
uploadResultInfo
;
return
uploadResultInfo
;
}
}
...
@@ -99,8 +158,7 @@ public class CompressUtils {
...
@@ -99,8 +158,7 @@ public class CompressUtils {
/**
/**
* 压缩文件(带目录)
* 压缩文件(带目录)
*
*
* @param catalogFiles
* @param catalogFiles key : 目录名 String[0]=文件名称, String[1]=文件地址
* key : 目录名 String[0]=文件名称, String[1]=文件地址
* @param zipName
* @param zipName
* @return
* @return
* @throws BizException
* @throws BizException
...
@@ -155,12 +213,10 @@ public class CompressUtils {
...
@@ -155,12 +213,10 @@ public class CompressUtils {
}
}
/**
/**
* @Desc ZIP文件解压
* @param zipPath ZIP文件目录
* @param zipPath
* @param destDir 解压目录
* ZIP文件目录
* @param destDir
* 解压目录
* @throws Exception
* @throws Exception
* @Desc ZIP文件解压
*/
*/
private
static
void
unzip
(
String
zipPath
,
String
destDir
)
throws
Exception
{
private
static
void
unzip
(
String
zipPath
,
String
destDir
)
throws
Exception
{
try
{
try
{
...
@@ -178,12 +234,10 @@ public class CompressUtils {
...
@@ -178,12 +234,10 @@ public class CompressUtils {
}
}
/**
/**
* @Desc rar文件解压
* @param rarPath rar路径
* @param rarPath
* @param destDir 解压到的文件夹
* rar路径
* @param destDir
* 解压到的文件夹
* @throws Exception
* @throws Exception
* @Desc rar文件解压
*/
*/
public
static
void
unrar
(
String
rarPath
,
String
destDir
)
throws
Exception
{
public
static
void
unrar
(
String
rarPath
,
String
destDir
)
throws
Exception
{
if
(!
rarPath
.
toLowerCase
().
endsWith
(
".rar"
))
{
if
(!
rarPath
.
toLowerCase
().
endsWith
(
".rar"
))
{
...
@@ -220,10 +274,10 @@ public class CompressUtils {
...
@@ -220,10 +274,10 @@ public class CompressUtils {
}
}
/**
/**
* @Desc 解压缩文件
* @param sourceFile zip或者rar文件路径
* @param zip或者rar文件路径
* @param destDir 解压目录
* @param 解压目录
* @throws Exception
* @throws Exception
* @Desc 解压缩文件
*/
*/
public
static
void
deCompress
(
String
sourceFile
,
String
destDir
)
throws
Exception
{
public
static
void
deCompress
(
String
sourceFile
,
String
destDir
)
throws
Exception
{
// 保证文件夹路径最后是"/"或者"\"
// 保证文件夹路径最后是"/"或者"\"
...
@@ -303,7 +357,6 @@ public class CompressUtils {
...
@@ -303,7 +357,6 @@ public class CompressUtils {
*
*
* @param src
* @param src
* @param zos
* @param zos
* @param baseDir
*/
*/
private
static
void
compress
(
File
src
,
ZipOutputStream
zos
)
{
private
static
void
compress
(
File
src
,
ZipOutputStream
zos
)
{
compressbyType
(
src
,
zos
,
""
,
true
);
compressbyType
(
src
,
zos
,
""
,
true
);
...
...
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