Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
8
8timerapiv200
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
8timerv2
8timerapiv200
Commits
83c656f5
Commit
83c656f5
authored
4 years ago
by
邓实川
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
oss删除文件接口
parent
3a4c114f
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
207 additions
and
13 deletions
+207
-13
src/main/java/cn/timer/api/controller/oss/OSSController.java
+38
-0
src/main/java/cn/timer/api/controller/qyxx/CmsController.java
+14
-6
src/main/java/cn/timer/api/dto/oss/OssDto.java
+41
-0
src/main/java/cn/timer/api/utils/aliyun/OSSUtil.java
+114
-7
No files found.
src/main/java/cn/timer/api/controller/oss/OSSController.java
View file @
83c656f5
...
...
@@ -7,7 +7,9 @@ import java.util.List;
import
org.apache.ibatis.annotations.Param
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
...
...
@@ -15,6 +17,7 @@ import org.springframework.web.multipart.MultipartFile;
import
cn.timer.api.config.annotation.CurrentUser
;
import
cn.timer.api.config.annotation.UserBean
;
import
cn.timer.api.dto.oss.OssDto
;
import
cn.timer.api.utils.Result
;
import
cn.timer.api.utils.ResultUtil
;
import
cn.timer.api.utils.aliyun.OSSUtil
;
...
...
@@ -113,4 +116,39 @@ public class OSSController {
return
ResultUtil
.
data
(
url
,
"获取成功"
);
}
/***********
* DELETE
*
* @param moudle
************/
@DeleteMapping
(
value
=
"/delSingle"
)
@ApiOperation
(
value
=
"删除单个(谨慎使用)"
,
httpMethod
=
"DELETE"
,
notes
=
"接口发布说明"
)
public
Result
<
String
>
delSingle
(
@CurrentUser
UserBean
userBean
,
@RequestParam
(
required
=
false
)
String
moudle
,
@RequestParam
(
required
=
false
)
String
fileName
)
{
String
path
=
"8timer2.0/"
+
userBean
.
getOrgCode
()
+
"/"
+
moudle
+
"/"
+
fileName
;
oss
.
delSingleFile
(
path
);
return
ResultUtil
.
success
(
"删除成功"
);
}
@DeleteMapping
(
value
=
"/delFiles"
)
@ApiOperation
(
value
=
"删除多个(谨慎使用,谨慎使用)"
,
httpMethod
=
"DELETE"
,
notes
=
"接口发布说明"
)
public
Result
<
List
<
String
>>
delFiles
(
@CurrentUser
UserBean
userBean
,
@RequestBody
OssDto
ossDto
)
{
List
<
String
>
keys
=
null
;
for
(
String
fileName
:
ossDto
.
getFileNames
())
{
keys
=
new
ArrayList
<
String
>();
String
key
=
"8timer2.0/"
+
userBean
.
getOrgCode
()
+
"/"
+
ossDto
.
getMoudle
()
+
"/"
+
fileName
;
keys
.
add
(
key
);
}
List
<
String
>
list
=
oss
.
delFiles
(
keys
,
ossDto
.
isQuiet
());
return
ResultUtil
.
data
(
list
,
"删除成功"
);
}
// @DeleteMapping(value = "/delWithPrefix")
// @ApiOperation(value = "删除指定前缀文件(谨慎使用,谨慎使用,谨慎使用)", httpMethod = "DELETE", notes = "接口发布说明")
// public Result<String> delWithPrefix(@RequestParam String prefix) {
// oss.delPrefixWith(prefix);
// return ResultUtil.success("删除成功");
// }
}
This diff is collapsed.
Click to expand it.
src/main/java/cn/timer/api/controller/qyxx/CmsController.java
View file @
83c656f5
...
...
@@ -18,6 +18,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
...
...
@@ -171,18 +172,21 @@ public class CmsController {
@ApiOperation
(
value
=
"添加/修改企业OA讯息"
,
httpMethod
=
"POST"
,
notes
=
"接口发布说明"
)
public
Result
<
CmsContent
>
updateqyxx
(
@CurrentUser
UserBean
userBean
,
@RequestBody
CmsContentDto
cmsContentDto
)
{
Integer
orgCode
=
userBean
.
getOrgCode
();
Integer
empNum
=
userBean
.
getEmpNum
();
String
str
=
StringUtils
.
join
(
cmsContentDto
.
getFilepath
(),
","
);
// 数组转字符串(逗号分隔)(推荐)
CmsContent
qynr
=
new
CmsContent
();
BeanUtil
.
copyProperties
(
cmsContentDto
,
qynr
);
qynr
.
setFilepath
(
str
);
Integer
i
=
10000
;
qynr
.
setXxbh
(
"XX"
+
i
++);
//
Integer i = 10000;
//
qynr.setXxbh("XX" + i++);
Boolean
a
=
qynr
.
getId
()
==
null
;
if
(
a
&&
qynr
.
getPublisher
()
==
null
)
qynr
.
setPublisher
(
userBean
.
getEmpNum
()
);
qynr
.
setOrganizationId
(
userBean
.
getOrgCode
()
);
qynr
.
setPublisher
(
empNum
);
qynr
.
setOrganizationId
(
orgCode
);
Long
now
=
new
Date
().
getTime
();
// 录入时间
qynr
.
setAddeddate
(
now
);
...
...
@@ -194,6 +198,8 @@ public class CmsController {
qynr
.
setReleasetime
(
qynr
.
getReleasetime
());
}
qynr
.
setPublisherName
(
YgglMainEmp
.
builder
().
build
().
selectOne
(
new
LambdaQueryWrapper
<
YgglMainEmp
>()
.
eq
(
YgglMainEmp:
:
getOrgCode
,
orgCode
).
eq
(
YgglMainEmp:
:
getEmpNum
,
empNum
)).
getName
());
qynr
.
setReleasetype
(
fbfs
);
qynr
.
setStatus
(
0
);
qynr
.
insertOrUpdate
();
...
...
@@ -225,9 +231,11 @@ public class CmsController {
@ApiOperation
(
value
=
"审核企业OA讯息"
,
httpMethod
=
"POST"
,
notes
=
"接口发布说明"
)
public
Result
<
CmsContent
>
shqyxx
(
@CurrentUser
UserBean
userBean
,
@RequestBody
CmsContent
qynr
)
{
Long
now
=
new
Date
().
getTime
();
Integer
orgCode
=
userBean
.
getOrgCode
();
Integer
empNum
=
userBean
.
getEmpNum
();
YgglMainEmp
ygglMainEmp
=
YgglMainEmp
.
builder
().
build
()
.
selectOne
(
new
QueryWrapper
<
YgglMainEmp
>().
eq
(
"emp_num"
,
userBean
.
getEmpNum
()
));
YgglMainEmp
ygglMainEmp
=
YgglMainEmp
.
builder
().
build
()
.
selectOne
(
new
QueryWrapper
<
YgglMainEmp
>().
lambda
()
.
eq
(
YgglMainEmp:
:
getOrgCode
,
orgCode
).
eq
(
YgglMainEmp:
:
getEmpNum
,
empNum
));
if
(
ygglMainEmp
!=
null
)
{
qynr
.
setAuditor
(
ygglMainEmp
.
getName
());
// 审核人
}
...
...
This diff is collapsed.
Click to expand it.
src/main/java/cn/timer/api/dto/oss/OssDto.java
0 → 100644
View file @
83c656f5
/**
* <p>Title: OssDto.java</p>
* <p>Description: </p>
* @author dsc
* @date 2020年5月11日
* @version 1.0
*/
package
cn
.
timer
.
api
.
dto
.
oss
;
import
java.io.Serializable
;
import
java.util.List
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* <p>
* Title: OssDto.java
* </p>
* <p>
* Description:
* </p>
*
* @author dsc
* @date 2020年5月11日
* @version 1.0
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public
class
OssDto
implements
Serializable
{
private
static
final
long
serialVersionUID
=
6897868588272725L
;
private
String
moudle
;
private
List
<
String
>
fileNames
;
private
boolean
quiet
;
}
This diff is collapsed.
Click to expand it.
src/main/java/cn/timer/api/utils/aliyun/OSSUtil.java
View file @
83c656f5
...
...
@@ -6,6 +6,7 @@ import java.io.IOException;
import
java.io.InputStream
;
import
java.io.InputStreamReader
;
import
java.net.URL
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.Iterator
;
import
java.util.List
;
...
...
@@ -18,8 +19,13 @@ import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import
com.aliyun.oss.OSS
;
import
com.aliyun.oss.OSSClientBuilder
;
import
com.aliyun.oss.model.DeleteObjectsRequest
;
import
com.aliyun.oss.model.DeleteObjectsResult
;
import
com.aliyun.oss.model.GetObjectRequest
;
import
com.aliyun.oss.model.ListObjectsRequest
;
import
com.aliyun.oss.model.OSSObject
;
import
com.aliyun.oss.model.OSSObjectSummary
;
import
com.aliyun.oss.model.ObjectListing
;
import
com.aliyun.oss.model.PutObjectRequest
;
import
cn.hutool.core.util.StrUtil
;
...
...
@@ -40,22 +46,22 @@ public class OSSUtil {
@Value
(
"${config-8timer.Aliyun.ACCESSKEY_ID}"
)
private
String
accessKeyId
;
@Value
(
"${config-8timer.Aliyun.SECRET}"
)
private
String
accessKeySecret
;
@Value
(
"${config-8timer.Aliyun.bucketName}"
)
private
String
bucketName
;
@Value
(
"${config-8timer.Aliyun.bucketName_pri}"
)
private
String
bucketName_pri
;
@Value
(
"${config-8timer.Aliyun.project_package}"
)
private
String
project_package
;
@Value
(
"${config-8timer.Aliyun.expirationTime}"
)
private
String
expirationTime
;
@Value
(
"${config-8timer.Aliyun.expirationTime_pri}"
)
private
String
expirationTime_pri
;
...
...
@@ -70,7 +76,7 @@ public class OSSUtil {
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录
// https://ram.console.aliyun.com 创建RAM账号。
// 创建OSSClient实例。
OSS
ossClient
=
new
OSSClientBuilder
().
build
(
endpoint
,
accessKeyId
,
accessKeySecret
);
// 创建存储空间。
ossClient
.
createBucket
(
bucketName
);
...
...
@@ -328,6 +334,107 @@ public class OSSUtil {
return
url
.
toString
();
}
/**
* 删除单个
*
* @param objectName 文件名
*/
public
void
delSingleFile
(
String
objectName
)
{
// // Endpoint以杭州为例,其它Region请按实际情况填写。
// String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
// String accessKeyId = "<yourAccessKeyId>";
// String accessKeySecret = "<yourAccessKeySecret>";
// String bucketName = "<yourBucketName>";
// String objectName = "<yourObjectName>";
// 创建OSSClient实例。
OSS
ossClient
=
new
OSSClientBuilder
().
build
(
endpoint
,
accessKeyId
,
accessKeySecret
);
// 删除文件。如需删除文件夹,请将ObjectName设置为对应的文件夹名称。如果文件夹非空,则需要将文件夹下的所有object删除后才能删除该文件夹。
ossClient
.
deleteObject
(
bucketName
,
objectName
);
// 关闭OSSClient。
ossClient
.
shutdown
();
}
/**
* 删除多个文件
* @param keys 需要删除的文件。
* @param quiet 返回模式。true表示简单模式,false表示详细模式。默认为详细模式。
* @return 删除结果。详细模式下为删除成功的文件列表,简单模式下为删除失败的文件列表。
*/
public
List
<
String
>
delFiles
(
List
<
String
>
keys
,
boolean
quiet
)
{
// // Endpoint以杭州为例,其它Region请按实际情况填写。
// String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
// String accessKeyId = "<yourAccessKeyId>";
// String accessKeySecret = "<yourAccessKeySecret>";
// String bucketName = "<yourBucketName>";
// 创建OSSClient实例。
OSS
ossClient
=
new
OSSClientBuilder
().
build
(
endpoint
,
accessKeyId
,
accessKeySecret
);
// 删除文件。key等同于ObjectName,表示删除OSS文件时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
// List<String> keys = new ArrayList<String>();
// keys.add("key0");
// keys.add("key1");
// keys.add("key2");
DeleteObjectsResult
deleteObjectsResult
=
ossClient
.
deleteObjects
(
new
DeleteObjectsRequest
(
bucketName
).
withKeys
(
keys
).
withQuiet
(
quiet
));
List
<
String
>
deletedObjects
=
deleteObjectsResult
.
getDeletedObjects
();
// 关闭OSSClient。
ossClient
.
shutdown
();
return
deletedObjects
;
}
/**
* 删除指定前缀(prefix)的文件
* @param prefix
*/
public
void
delPrefixWith
(
String
prefix
)
{
// // Endpoint以杭州为例,其它Region请按实际情况填写。
// String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录
// // https://ram.console.aliyun.com 创建RAM账号。
// String accessKeyId = "<yourAccessKeyId>";
// String accessKeySecret = "<yourAccessKeySecret>";
// String bucketName = "<yourBucketName>";
//
// // 指定前缀。
// final String prefix = "<yourkeyPrefix>";
// 创建OSSClient实例。
OSS
ossClient
=
new
OSSClientBuilder
().
build
(
endpoint
,
accessKeyId
,
accessKeySecret
);
// 列举所有包含指定前缀的文件并删除。
String
nextMarker
=
null
;
ObjectListing
objectListing
=
null
;
do
{
ListObjectsRequest
listObjectsRequest
=
new
ListObjectsRequest
(
bucketName
).
withPrefix
(
prefix
)
.
withMarker
(
nextMarker
);
objectListing
=
ossClient
.
listObjects
(
listObjectsRequest
);
if
(
objectListing
.
getObjectSummaries
().
size
()
>
0
)
{
List
<
String
>
keys
=
new
ArrayList
<
String
>();
for
(
OSSObjectSummary
s
:
objectListing
.
getObjectSummaries
())
{
System
.
out
.
println
(
"key name: "
+
s
.
getKey
());
keys
.
add
(
s
.
getKey
());
}
DeleteObjectsRequest
deleteObjectsRequest
=
new
DeleteObjectsRequest
(
bucketName
).
withKeys
(
keys
);
ossClient
.
deleteObjects
(
deleteObjectsRequest
);
}
nextMarker
=
objectListing
.
getNextMarker
();
}
while
(
objectListing
.
isTruncated
());
// 关闭OSSClient。
ossClient
.
shutdown
();
}
/*
* (跨域资源) // Endpoint以杭州为例,其它Region请按实际情况填写。 String endpoint =
* "http://oss-cn-hangzhou.aliyuncs.com"; //
...
...
This diff is collapsed.
Click to expand it.
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