Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pms-ci-test
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
test-ci
pms-ci-test
Commits
7ab0bb00
提交
7ab0bb00
authored
6月 12, 2023
作者:
张小凤
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
breakpoint
上级
dc8df57a
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
102 行增加
和
0 行删除
+102
-0
pms.log.2023-06-10.0.gz
logs/pms.log.2023-06-10.0.gz
+0
-0
UploadController.java
src/main/java/com/mmc/pms/controller/UploadController.java
+74
-0
XmlUtil.java
src/main/java/com/mmc/pms/util/XmlUtil.java
+28
-0
没有找到文件。
logs/pms.log.2023-06-10.0.gz
0 → 100644
浏览文件 @
7ab0bb00
File added
src/main/java/com/mmc/pms/controller/UploadController.java
浏览文件 @
7ab0bb00
...
@@ -4,10 +4,16 @@ import com.alibaba.fastjson2.JSONObject;
...
@@ -4,10 +4,16 @@ import com.alibaba.fastjson2.JSONObject;
import
com.aliyun.oss.ClientBuilderConfiguration
;
import
com.aliyun.oss.ClientBuilderConfiguration
;
import
com.aliyun.oss.OSS
;
import
com.aliyun.oss.OSS
;
import
com.aliyun.oss.OSSClientBuilder
;
import
com.aliyun.oss.OSSClientBuilder
;
import
com.aliyun.oss.OSSException
;
import
com.aliyun.oss.model.ObjectMetadata
;
import
com.aliyun.oss.model.PutObjectRequest
;
import
com.aliyun.oss.model.UploadFileRequest
;
import
com.aliyun.oss.model.UploadFileResult
;
import
com.mmc.pms.common.ResultBody
;
import
com.mmc.pms.common.ResultBody
;
import
com.mmc.pms.common.ResultEnum
;
import
com.mmc.pms.common.ResultEnum
;
import
com.mmc.pms.util.FileLoadUtil
;
import
com.mmc.pms.util.FileLoadUtil
;
import
com.mmc.pms.util.OssConstant
;
import
com.mmc.pms.util.OssConstant
;
import
com.mmc.pms.util.XmlUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiImplicitParams
;
...
@@ -20,6 +26,7 @@ import javax.servlet.ServletOutputStream;
...
@@ -20,6 +26,7 @@ import javax.servlet.ServletOutputStream;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.*
;
import
java.io.*
;
import
java.nio.charset.StandardCharsets
;
import
java.text.SimpleDateFormat
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
import
java.util.*
;
...
@@ -74,6 +81,73 @@ public class UploadController {
...
@@ -74,6 +81,73 @@ public class UploadController {
return
ResultBody
.
success
(
jsObj
);
return
ResultBody
.
success
(
jsObj
);
}
}
@PostMapping
(
"/breakpoint"
)
public
ResultBody
breakpoint
(
@RequestParam
(
"uploadFile"
)
MultipartFile
uploadFile
,
HttpServletRequest
request
)
throws
IOException
{
OSS
ossClient
=
new
OSSClientBuilder
()
.
build
(
OssConstant
.
ENDPOINT
,
OssConstant
.
ACCESSKEYID
,
OssConstant
.
ACCESSKEYSECRET
);
File
file
=
XmlUtil
.
ossUpload
(
uploadFile
);
String
location
=
null
;
try
{
ObjectMetadata
meta
=
new
ObjectMetadata
();
// 指定上传的内容类型。
// meta.setContentType("text/plain");
// 文件上传时设置访问权限ACL。
// meta.setObjectAcl(CannedAccessControlList.Private);
String
oldName
=
uploadFile
.
getOriginalFilename
();
String
newName
=
"file/"
+
UUID
.
randomUUID
().
toString
()
+
oldName
.
substring
(
oldName
.
lastIndexOf
(
"."
),
oldName
.
length
());
// 通过UploadFileRequest设置多个参数。
// 依次填写Bucket名称(例如examplebucket)以及Object完整路径(例如exampledir/exampleobject.txt),Object完整路径中不能包含Bucket名称。
UploadFileRequest
uploadFileRequest
=
new
UploadFileRequest
(
"pad-video-x"
,
newName
);
// 通过UploadFileRequest设置单个参数。
// 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。
uploadFileRequest
.
setUploadFile
(
file
.
toString
());
// 指定上传并发线程数,默认值为1。
uploadFileRequest
.
setTaskNum
(
15
);
// 指定上传的分片大小,单位为字节,取值范围为100 KB~5 GB。默认值为100 KB。
uploadFileRequest
.
setPartSize
(
1
*
1024
*
1024
);
// 开启断点续传,默认关闭。
uploadFileRequest
.
setEnableCheckpoint
(
true
);
// 记录本地分片上传结果的文件。上传过程中的进度信息会保存在该文件中,如果某一分片上传失败,再次上传时会根据文件中记录的点继续上传。上传完成后,该文件会被删除。
// 如果未设置该值,默认与待上传的本地文件同路径,名称为${uploadFile}.ucp。
uploadFileRequest
.
setCheckpointFile
(
"uploadFile.ucp"
);
// 文件的元数据。
uploadFileRequest
.
setObjectMetadata
(
meta
);
// 设置上传回调,参数为Callback类型。
//uploadFileRequest.setCallback("yourCallbackEvent");
// 断点续传上传。
UploadFileResult
uploadFileResult
=
ossClient
.
uploadFile
(
uploadFileRequest
);
location
=
uploadFileResult
.
getMultipartUploadResult
().
getLocation
();
System
.
out
.
println
(
uploadFileResult
);
}
catch
(
OSSException
oe
)
{
System
.
out
.
println
(
"Caught an OSSException, which means your request made it to OSS, "
+
"but was rejected with an error response for some reason."
);
System
.
out
.
println
(
"Error Message:"
+
oe
.
getErrorMessage
());
System
.
out
.
println
(
"Error Code:"
+
oe
.
getErrorCode
());
System
.
out
.
println
(
"Request ID:"
+
oe
.
getRequestId
());
System
.
out
.
println
(
"Host ID:"
+
oe
.
getHostId
());
}
catch
(
Throwable
ce
)
{
System
.
out
.
println
(
"Caught an ClientException, which means the client encountered "
+
"a serious internal problem while trying to communicate with OSS, "
+
"such as not being able to access the network."
);
System
.
out
.
println
(
"Error Message:"
+
ce
.
getMessage
());
}
finally
{
// 关闭OSSClient。
if
(
ossClient
!=
null
)
{
ossClient
.
shutdown
();
}
}
return
ResultBody
.
success
(
location
);
}
@ApiOperation
(
value
=
"V1.0.1-上传多个文件到阿里云oss"
)
@ApiOperation
(
value
=
"V1.0.1-上传多个文件到阿里云oss"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
@ApiImplicitParam
(
@ApiImplicitParam
(
...
...
src/main/java/com/mmc/pms/util/XmlUtil.java
0 → 100644
浏览文件 @
7ab0bb00
package
com
.
mmc
.
pms
.
util
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
import
java.io.IOException
;
import
java.util.UUID
;
/**
* @Author small
* @Date 2023/6/12 19:36
* @Version 1.0
*/
public
class
XmlUtil
{
public
static
File
ossUpload
(
MultipartFile
file
)
throws
IOException
{
// 获取文件名
String
fileName
=
file
.
getOriginalFilename
();
// 获取文件后缀
String
prefix
=
fileName
.
substring
(
fileName
.
lastIndexOf
(
"."
));
// 用uuid作为文件名,防止生成的临时文件重复
File
excelFile
=
File
.
createTempFile
(
UUID
.
randomUUID
().
toString
(),
prefix
);
// MultipartFile to File
file
.
transferTo
(
excelFile
);
//程序结束时,删除临时文件
return
excelFile
;
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论