Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
wwwanlingxiao
mall
Commits
61d66f7c
Commit
61d66f7c
authored
May 17, 2018
by
zhh
Browse files
添加oss功能
parent
59bdc015
Changes
9
Hide whitespace changes
Inline
Side-by-side
mall-admin/pom.xml
View file @
61d66f7c
...
...
@@ -78,6 +78,12 @@
<artifactId>
jjwt
</artifactId>
<version>
0.9.0
</version>
</dependency>
<!-- 阿里云OSS -->
<dependency>
<groupId>
com.aliyun.oss
</groupId>
<artifactId>
aliyun-sdk-oss
</artifactId>
<version>
2.5.0
</version>
</dependency>
</dependencies>
<build>
<plugins>
...
...
mall-admin/src/main/java/com/macro/mall/config/OssConfig.java
0 → 100644
View file @
61d66f7c
package
com.macro.mall.config
;
import
com.aliyun.oss.OSSClient
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
/**
* Created by macro on 2018/5/17.
*/
@Configuration
public
class
OssConfig
{
@Value
(
"${aliyun.oss.endpoint}"
)
private
String
ALIYUN_OSS_ENDPOINT
;
@Value
(
"${aliyun.oss.accessKeyId}"
)
private
String
ALIYUN_OSS_ACCESSKEYID
;
@Value
(
"${aliyun.oss.accessKeySecret}"
)
private
String
ALIYUN_OSS_ACCESSKEYSECRET
;
@Bean
public
OSSClient
ossClient
(){
return
new
OSSClient
(
ALIYUN_OSS_ENDPOINT
,
ALIYUN_OSS_ACCESSKEYID
,
ALIYUN_OSS_ACCESSKEYSECRET
);
}
}
mall-admin/src/main/java/com/macro/mall/controller/OssController.java
0 → 100644
View file @
61d66f7c
package
com.macro.mall.controller
;
import
com.macro.mall.dto.CommonResult
;
import
com.macro.mall.dto.OssCallbackResult
;
import
com.macro.mall.dto.OssPolicyResult
;
import
com.macro.mall.service.impl.OssServiceImpl
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletRequest
;
/**
* Oss相关操作接口
* Created by macro on 2018/4/26.
*/
@Controller
@Api
(
tags
=
"OssController"
,
description
=
"Oss管理"
)
@RequestMapping
(
"/aliyun/oss"
)
public
class
OssController
{
@Autowired
private
OssServiceImpl
ossService
;
@ApiOperation
(
value
=
"oss上传签名生成"
)
@RequestMapping
(
value
=
"/policy"
,
method
=
RequestMethod
.
GET
)
@ResponseBody
public
Object
policy
()
{
OssPolicyResult
result
=
ossService
.
policy
();
return
new
CommonResult
().
success
(
result
);
}
/**
* 上传成功回调方法
*/
@RequestMapping
(
value
=
"callback"
,
method
=
RequestMethod
.
POST
)
@ResponseBody
public
Object
callback
(
HttpServletRequest
request
)
{
OssCallbackResult
ossCallbackResult
=
ossService
.
callback
(
request
);
return
new
CommonResult
().
success
(
ossCallbackResult
);
}
}
mall-admin/src/main/java/com/macro/mall/dto/OssCallbackParam.java
0 → 100644
View file @
61d66f7c
package
com.macro.mall.dto
;
/**
* Created by macro on 2018/5/17.
*/
public
class
OssCallbackParam
{
private
String
callbackUrl
;
private
String
callbackBody
;
private
String
callbackBodyType
;
public
String
getCallbackUrl
()
{
return
callbackUrl
;
}
public
void
setCallbackUrl
(
String
callbackUrl
)
{
this
.
callbackUrl
=
callbackUrl
;
}
public
String
getCallbackBody
()
{
return
callbackBody
;
}
public
void
setCallbackBody
(
String
callbackBody
)
{
this
.
callbackBody
=
callbackBody
;
}
public
String
getCallbackBodyType
()
{
return
callbackBodyType
;
}
public
void
setCallbackBodyType
(
String
callbackBodyType
)
{
this
.
callbackBodyType
=
callbackBodyType
;
}
}
mall-admin/src/main/java/com/macro/mall/dto/OssCallbackResult.java
0 → 100644
View file @
61d66f7c
package
com.macro.mall.dto
;
/**
* Created by macro on 2018/5/17.
*/
public
class
OssCallbackResult
{
private
String
filename
;
private
String
size
;
private
String
mimeType
;
private
String
width
;
private
String
height
;
public
String
getFilename
()
{
return
filename
;
}
public
void
setFilename
(
String
filename
)
{
this
.
filename
=
filename
;
}
public
String
getSize
()
{
return
size
;
}
public
void
setSize
(
String
size
)
{
this
.
size
=
size
;
}
public
String
getMimeType
()
{
return
mimeType
;
}
public
void
setMimeType
(
String
mimeType
)
{
this
.
mimeType
=
mimeType
;
}
public
String
getWidth
()
{
return
width
;
}
public
void
setWidth
(
String
width
)
{
this
.
width
=
width
;
}
public
String
getHeight
()
{
return
height
;
}
public
void
setHeight
(
String
height
)
{
this
.
height
=
height
;
}
}
mall-admin/src/main/java/com/macro/mall/dto/OssPolicyResult.java
0 → 100644
View file @
61d66f7c
package
com.macro.mall.dto
;
/**
* Created by macro on 2018/5/17.
*/
public
class
OssPolicyResult
{
private
String
accessKeyId
;
private
String
policy
;
private
String
signature
;
private
String
dir
;
private
String
callback
;
private
String
action
;
public
String
getAccessKeyId
()
{
return
accessKeyId
;
}
public
void
setAccessKeyId
(
String
accessKeyId
)
{
this
.
accessKeyId
=
accessKeyId
;
}
public
String
getPolicy
()
{
return
policy
;
}
public
void
setPolicy
(
String
policy
)
{
this
.
policy
=
policy
;
}
public
String
getSignature
()
{
return
signature
;
}
public
void
setSignature
(
String
signature
)
{
this
.
signature
=
signature
;
}
public
String
getDir
()
{
return
dir
;
}
public
void
setDir
(
String
dir
)
{
this
.
dir
=
dir
;
}
public
String
getCallback
()
{
return
callback
;
}
public
void
setCallback
(
String
callback
)
{
this
.
callback
=
callback
;
}
public
String
getAction
()
{
return
action
;
}
public
void
setAction
(
String
action
)
{
this
.
action
=
action
;
}
}
mall-admin/src/main/java/com/macro/mall/service/OssService.java
0 → 100644
View file @
61d66f7c
package
com.macro.mall.service
;
import
com.macro.mall.dto.OssCallbackResult
;
import
com.macro.mall.dto.OssPolicyResult
;
import
javax.servlet.http.HttpServletRequest
;
/**
* Created by macro on 2018/5/17.
*/
public
interface
OssService
{
OssPolicyResult
policy
();
OssCallbackResult
callback
(
HttpServletRequest
request
);
}
mall-admin/src/main/java/com/macro/mall/service/impl/OssServiceImpl.java
0 → 100644
View file @
61d66f7c
package
com.macro.mall.service.impl
;
import
com.aliyun.oss.OSSClient
;
import
com.aliyun.oss.common.utils.BinaryUtil
;
import
com.aliyun.oss.model.MatchMode
;
import
com.aliyun.oss.model.PolicyConditions
;
import
com.macro.mall.dto.OssCallbackParam
;
import
com.macro.mall.dto.OssCallbackResult
;
import
com.macro.mall.dto.OssPolicyResult
;
import
com.macro.mall.service.OssService
;
import
com.macro.mall.util.JsonUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
javax.servlet.http.HttpServletRequest
;
import
java.text.SimpleDateFormat
;
import
java.util.Date
;
/**
* Created by macro on 2018/5/17.
*/
@Service
public
class
OssServiceImpl
implements
OssService
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
OssServiceImpl
.
class
);
@Value
(
"${aliyun.oss.policy.expire}"
)
private
int
ALIYUN_OSS_EXPIRE
;
@Value
(
"${aliyun.oss.maxSize}"
)
private
int
ALIYUN_OSS_MAX_SIZE
;
@Value
(
"${aliyun.oss.callback}"
)
private
String
ALIYUN_OSS_CALLBACK
;
@Value
(
"${aliyun.oss.bucketName}"
)
private
String
ALIYUN_OSS_BUCKET_NAME
;
@Value
(
"${aliyun.oss.endpoint}"
)
private
String
ALIYUN_OSS_ENDPOINT
;
@Value
(
"${aliyun.oss.dir.prefix}"
)
private
String
ALIYUN_OSS_DIR_PREFIX
;
@Autowired
private
OSSClient
ossClient
;
/**
* 签名生成
*/
@Override
public
OssPolicyResult
policy
()
{
OssPolicyResult
result
=
new
OssPolicyResult
();
// 存储目录
SimpleDateFormat
sdf
=
new
SimpleDateFormat
(
"yyyyMMdd"
);
String
dir
=
ALIYUN_OSS_DIR_PREFIX
+
sdf
.
format
(
new
Date
());
// 签名有效期
long
expireEndTime
=
System
.
currentTimeMillis
()
+
ALIYUN_OSS_EXPIRE
*
1000
;
Date
expiration
=
new
Date
(
expireEndTime
);
// 文件大小
long
maxSize
=
ALIYUN_OSS_MAX_SIZE
*
1024
*
1024
;
// 回调
// OssCallbackParam callback = new OssCallbackParam();
// callback.setCallbackUrl(ALIYUN_OSS_CALLBACK);
// callback.setCallbackBody("filename=${object}&size=${size}&mimeType=${mimeType}&height=${imageInfo.height}&width=${imageInfo.width}");
// callback.setCallbackBodyType("application/x-www-form-urlencoded");
// 提交节点
String
action
=
"http://"
+
ALIYUN_OSS_BUCKET_NAME
+
"."
+
ALIYUN_OSS_ENDPOINT
;
try
{
PolicyConditions
policyConds
=
new
PolicyConditions
();
policyConds
.
addConditionItem
(
PolicyConditions
.
COND_CONTENT_LENGTH_RANGE
,
0
,
maxSize
);
policyConds
.
addConditionItem
(
MatchMode
.
StartWith
,
PolicyConditions
.
COND_KEY
,
dir
);
String
postPolicy
=
ossClient
.
generatePostPolicy
(
expiration
,
policyConds
);
byte
[]
binaryData
=
postPolicy
.
getBytes
(
"utf-8"
);
String
policy
=
BinaryUtil
.
toBase64String
(
binaryData
);
String
signature
=
ossClient
.
calculatePostSignature
(
postPolicy
);
// String callbackData = BinaryUtil.toBase64String(JsonUtil.objectToJson(callback).getBytes("utf-8"));
// 返回结果
result
.
setAccessKeyId
(
ossClient
.
getCredentialsProvider
().
getCredentials
().
getAccessKeyId
());
result
.
setPolicy
(
policy
);
result
.
setSignature
(
signature
);
result
.
setDir
(
dir
);
// result.setCallback(callbackData);
result
.
setAction
(
action
);
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"签名生成失败"
,
e
);
}
return
result
;
}
@Override
public
OssCallbackResult
callback
(
HttpServletRequest
request
)
{
OssCallbackResult
result
=
new
OssCallbackResult
();
String
filename
=
request
.
getParameter
(
"filename"
);
filename
=
"http://"
.
concat
(
ALIYUN_OSS_BUCKET_NAME
).
concat
(
"."
).
concat
(
ALIYUN_OSS_ENDPOINT
).
concat
(
"/"
).
concat
(
filename
);
result
.
setFilename
(
filename
);
result
.
setSize
(
request
.
getParameter
(
"size"
));
result
.
setMimeType
(
request
.
getParameter
(
"mimeType"
));
result
.
setWidth
(
request
.
getParameter
(
"width"
));
result
.
setHeight
(
request
.
getParameter
(
"height"
));
return
result
;
}
}
mall-admin/src/main/resources/application.properties
View file @
61d66f7c
...
...
@@ -36,4 +36,15 @@ jwt.secret=mySecret
jwt.expiration
=
604800
#JWT负载中拿到开头
jwt.tokenHead
=
Bearer
#===JWT
end
=
==
\ No newline at end of file
#===JWT end===
#===OSS start===
aliyun.oss.endpoint
=
oss-cn-shenzhen.aliyuncs.com
aliyun.oss.accessKeyId
=
test
aliyun.oss.accessKeySecret
=
test
aliyun.oss.bucketName
=
macro-oss
aliyun.oss.policy.expire
=
300
aliyun.oss.maxSize
=
10
aliyun.oss.callback
=
http://localhost:8080/aliyun/oss/callback
aliyun.oss.dir.prefix
=
mall/images/
#===OSS
end
=
==
\ No newline at end of file
Write
Preview
Supports
Markdown
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