Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
P
pms
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
iuav
pms
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;
import
com.aliyun.oss.ClientBuilderConfiguration
;
import
com.aliyun.oss.OSS
;
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.ResultEnum
;
import
com.mmc.pms.util.FileLoadUtil
;
import
com.mmc.pms.util.OssConstant
;
import
com.mmc.pms.util.XmlUtil
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
...
...
@@ -20,6 +26,7 @@ import javax.servlet.ServletOutputStream;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.*
;
import
java.nio.charset.StandardCharsets
;
import
java.text.SimpleDateFormat
;
import
java.util.*
;
...
...
@@ -74,6 +81,73 @@ public class UploadController {
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"
)
@ApiImplicitParams
({
@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
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论