记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
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
董敬伟
liquidnet-bus-v1
Commits
a97e0c67
Commit
a97e0c67
authored
Jan 11, 2022
by
jiangxiulong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
视频人流量 完善url 人体检测
parent
db367dc5
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
423 additions
and
60 deletions
+423
-60
KylinCameraDevicesVo.java
.../liquidnet/service/kylin/dto/vo/KylinCameraDevicesVo.java
+51
-0
KylinCamera.java
.../java/com/liquidnet/service/kylin/entity/KylinCamera.java
+23
-9
db_0110_camera.sql
...ylin/liquidnet-service-kylin-impl/docu/db_0110_camera.sql
+11
-10
pom.xml
...-service-platform/liquidnet-service-platform-impl/pom.xml
+20
-0
KylinCameraCallBackController.java
...tform/controller/kylin/KylinCameraCallBackController.java
+0
-41
KylinCameraController.java
...vice/platform/controller/kylin/KylinCameraController.java
+170
-0
ViapiFileUtilAdvance.java
...iquidnet/service/platform/utils/ViapiFileUtilAdvance.java
+148
-0
No files found.
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/KylinCameraDevicesVo.java
0 → 100644
View file @
a97e0c67
package
com
.
liquidnet
.
service
.
kylin
.
dto
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* <p>
* 人流量排队检测摄像头表
* </p>
*
* @author jiangxiulong
* @since 2022-01-11
*/
@Data
@ApiModel
public
class
KylinCameraDevicesVo
implements
Serializable
{
/*@ApiModelProperty(value = "camera_id")
private String cameraId;
@ApiModelProperty(value = "设备用户名/国标ID")
private String streamName;
@ApiModelProperty(value = "场地ID")
private String fieldId;
@ApiModelProperty(value = "截图url")
private String imgUrl;
@ApiModelProperty(value = "地点类型 1卫生间 2。。。")
private Integer siteType;
@ApiModelProperty(value = "创建时间")
private String createdAt;
@ApiModelProperty(value = "修改时间")
private String updatedAt;*/
@ApiModelProperty
(
value
=
"设备描述 暂时用来村特殊参数json"
)
private
String
Description
;
@ApiModelProperty
(
value
=
"国标ID"
)
private
String
GbId
;
@ApiModelProperty
(
value
=
"设备状态 取值:on(在线),off(离线),failed(锁定),new(未注册)"
)
private
String
status
;
}
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/java/com/liquidnet/service/kylin/entity/KylinCamera.java
View file @
a97e0c67
...
...
@@ -2,11 +2,12 @@ package com.liquidnet.service.kylin.entity;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
java.time.LocalDateTime
;
import
java.io.Serializable
;
import
lombok.Data
;
import
lombok.EqualsAndHashCode
;
import
java.io.Serializable
;
import
java.time.LocalDateTime
;
/**
* <p>
* 人流量排队检测摄像头表
...
...
@@ -17,7 +18,7 @@ import lombok.EqualsAndHashCode;
*/
@Data
@EqualsAndHashCode
(
callSuper
=
false
)
public
class
KylinCamera
implements
Serializable
{
public
class
KylinCamera
implements
Serializable
,
Cloneable
{
private
static
final
long
serialVersionUID
=
1L
;
...
...
@@ -30,28 +31,41 @@ public class KylinCamera implements Serializable {
private
String
cameraId
;
/**
*
设备用户名/
国标ID
* 国标ID
*/
private
String
streamName
;
private
String
gbId
;
/**
*
场地ID
*
截图url
*/
private
String
fieldId
;
private
String
imgUrl
;
/**
*
截图url
*
场地ID
*/
private
String
imgUrl
;
private
String
fieldId
;
/**
* 地点类型 1卫生间 2。。。
*/
private
Integer
siteType
;
/**
* 设备状态 取值:on(在线),off(离线),failed(锁定),new(未注册)
*/
private
String
status
;
private
LocalDateTime
createdAt
;
private
LocalDateTime
updatedAt
;
private
static
final
KylinCamera
obj
=
new
KylinCamera
();
public
static
KylinCamera
getNew
()
{
try
{
return
(
KylinCamera
)
obj
.
clone
();
}
catch
(
CloneNotSupportedException
e
)
{
return
new
KylinCamera
();
}
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/docu/db_0110_camera.sql
View file @
a97e0c67
drop
TABLE
if
exists
`kylin_camera`
;
CREATE
TABLE
`kylin_camera`
(
`mid`
int
unsigned
NOT
NULL
AUTO_INCREMENT
,
`camera_id`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'camera_id'
,
`stream_name`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'设备用户名/国标ID'
,
`field_id`
varchar
(
64
)
NOT
NULL
DEFAULT
''
COMMENT
'场地ID'
,
`img_url`
varchar
(
500
)
NOT
NULL
DEFAULT
''
COMMENT
'截图url'
,
`site_type`
tinyint
NOT
NULL
DEFAULT
0
COMMENT
'地点类型 1卫生间 2。。。'
,
`created_at`
timestamp
NULL
DEFAULT
NULL
,
`updated_at`
timestamp
NULL
DEFAULT
NULL
,
`mid`
int
unsigned
NOT
NULL
AUTO_INCREMENT
,
`camera_id`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'camera_id'
,
`gb_id`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'国标ID'
,
`img_url`
varchar
(
500
)
NOT
NULL
DEFAULT
''
COMMENT
'截图url'
,
`field_id`
varchar
(
64
)
NOT
NULL
DEFAULT
''
COMMENT
'场地ID'
,
`site_type`
tinyint
NOT
NULL
DEFAULT
0
COMMENT
'地点类型 1卫生间 2。。。'
,
`status`
varchar
(
64
)
NOT
NULL
DEFAULT
''
COMMENT
'设备状态 取值:on(在线),off(离线),failed(锁定),new(未注册)'
,
`created_at`
datetime
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'创建时间'
,
`updated_at`
datetime
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'更新时间'
,
KEY
`idx_camera_id`
(
`camera_id`
),
PRIMARY
KEY
(
`mid`
)
)
ENGINE
=
InnoDB
...
...
@@ -22,8 +23,8 @@ CREATE TABLE `kylin_camera_record`
`camera_record_id`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'camera_record_id'
,
`camera_id`
varchar
(
255
)
NOT
NULL
DEFAULT
''
COMMENT
'camera_id'
,
`person_num`
int
NOT
NULL
DEFAULT
0
COMMENT
'检测到的人数'
,
`created_at`
timestamp
NULL
DEFAULT
NULL
,
`updated_at`
timestamp
NULL
DEFAULT
NULL
,
`created_at`
datetime
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'创建时间'
,
`updated_at`
datetime
NULL
DEFAULT
CURRENT_TIMESTAMP
COMMENT
'更新时间'
,
KEY
`idx_camera_record_id`
(
`camera_record_id`
),
PRIMARY
KEY
(
`mid`
)
)
ENGINE
=
InnoDB
...
...
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/pom.xml
View file @
a97e0c67
...
...
@@ -71,6 +71,26 @@
<groupId>
com.aliyun
</groupId>
<artifactId>
aliyun-java-sdk-dypnsapi
</artifactId>
</dependency>
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
tea-openapi
</artifactId>
<version>
0.0.7
</version>
</dependency>
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
openplatform20191219
</artifactId>
<version>
3.0.1
</version>
</dependency>
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
oss-client
</artifactId>
<version>
3.0.2
</version>
</dependency>
<dependency>
<groupId>
com.aliyun
</groupId>
<artifactId>
aliyun-java-sdk-facebody
</artifactId>
<version>
1.2.27
</version>
</dependency>
<dependency>
...
...
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/controller/kylin/KylinCameraCallBackController.java
deleted
100644 → 0
View file @
db367dc5
package
com
.
liquidnet
.
service
.
platform
.
controller
.
kylin
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.*
;
/**
* <p>
* 人流量排队检测摄像头表 前端控制器
* </p>
*
* @author jiangxiulong
* @since 2022-01-10
*/
@Api
(
tags
=
"截图回调"
)
@Slf4j
@RestController
@RequestMapping
(
"/camera"
)
public
class
KylinCameraCallBackController
{
@PostMapping
(
value
=
"create"
,
produces
=
"application/xml;charset=UTF-8"
)
@ApiOperation
(
"截图回调"
)
public
String
record
(
@RequestBody
String
requestBody
,
@RequestParam
(
value
=
"siteType"
)
Integer
siteType
,
@RequestParam
(
value
=
"fieldId"
)
String
fieldId
)
{
try
{
log
.
info
(
"接收截图回调请求:[siteType=[{}], fieldId=[{}], requestBody=[{}]"
,
siteType
,
fieldId
,
requestBody
);
// TODO: 2022/1/10 jxltodo 验签
return
"success"
;
}
catch
(
Exception
e
)
{
log
.
error
(
"截图回调Exception:[msg={}, e={}]"
,
e
.
getMessage
(),
e
);
return
"error"
;
}
}
}
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/controller/kylin/KylinCameraController.java
0 → 100644
View file @
a97e0c67
package
com
.
liquidnet
.
service
.
platform
.
controller
.
kylin
;
import
com.aliyuncs.CommonRequest
;
import
com.aliyuncs.CommonResponse
;
import
com.aliyuncs.DefaultAcsClient
;
import
com.aliyuncs.IAcsClient
;
import
com.aliyuncs.exceptions.ClientException
;
import
com.aliyuncs.facebody.model.v20191230.DetectPedestrianRequest
;
import
com.aliyuncs.facebody.model.v20191230.DetectPedestrianResponse
;
import
com.aliyuncs.http.MethodType
;
import
com.aliyuncs.profile.DefaultProfile
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.databind.JsonNode
;
import
com.fasterxml.jackson.databind.MapperFeature
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.google.gson.Gson
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.service.kylin.dto.vo.KylinCameraDevicesVo
;
import
com.liquidnet.service.kylin.entity.KylinCamera
;
import
com.liquidnet.service.kylin.mapper.KylinCameraMapper
;
import
com.liquidnet.service.platform.utils.ViapiFileUtilAdvance
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
java.io.InputStream
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
* <p>
* 人流量排队检测摄像头表 前端控制器
* </p>
*
* @author jiangxiulong
* @since 2022-01-10
*/
@Api
(
tags
=
"视频计算"
)
@Slf4j
@RestController
@RequestMapping
(
"/camera"
)
public
class
KylinCameraController
{
@Autowired
private
KylinCameraMapper
cameraMapper
;
@PostMapping
(
value
=
"callBack"
,
produces
=
"application/xml;charset=UTF-8"
)
@ApiOperation
(
"截图回调"
)
public
String
callBack
(
@RequestBody
String
requestBody
,
@RequestParam
(
value
=
"siteType"
)
Integer
siteType
,
@RequestParam
(
value
=
"fieldId"
)
String
fieldId
)
{
try
{
log
.
info
(
"接收截图回调请求:[siteType=[{}], fieldId=[{}], requestBody=[{}]"
,
siteType
,
fieldId
,
requestBody
);
// TODO: 2022/1/10 jxltodo 验签
return
"success"
;
}
catch
(
Exception
e
)
{
log
.
error
(
"截图回调Exception:[msg={}, e={}]"
,
e
.
getMessage
(),
e
);
return
"error"
;
}
}
@GetMapping
(
value
=
"describeDevices"
)
@ApiOperation
(
"获取设备列表"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"Integer"
,
name
=
"pageNum"
,
value
=
"页码"
),
@ApiImplicitParam
(
type
=
"query"
,
dataType
=
"Integer"
,
name
=
"pageSize"
,
value
=
"数量"
)
})
public
String
describeDevices
(
@RequestParam
(
value
=
"pageNum"
,
defaultValue
=
"1"
)
Integer
pageNum
,
@RequestParam
(
value
=
"pageSize"
,
defaultValue
=
"20"
)
Integer
pageSize
)
{
// TODO: 2022/1/10 jxltodo 改成配置
DefaultProfile
profile
=
DefaultProfile
.
getProfile
(
"cn-beijing"
,
"LTAI5t5kniDKEadiKHWiCM9Q"
,
"hIZPi0AluvrgBE5xg5Pa9fBvvAqnbw"
);
IAcsClient
client
=
new
DefaultAcsClient
(
profile
);
CommonRequest
request
=
new
CommonRequest
();
request
.
setSysMethod
(
MethodType
.
POST
);
request
.
setSysDomain
(
"vs.cn-beijing.aliyuncs.com"
);
request
.
setSysVersion
(
"2018-12-12"
);
request
.
setSysAction
(
"DescribeDevices"
);
request
.
putQueryParameter
(
"GroupId"
,
"410751715516867255-cn-beijing"
);
request
.
putQueryParameter
(
"PageNum"
,
String
.
valueOf
(
pageNum
));
request
.
putQueryParameter
(
"PageSize"
,
String
.
valueOf
(
pageSize
));
try
{
CommonResponse
response
=
client
.
getCommonResponse
(
request
);
JsonNode
devices
=
JsonUtils
.
fromJson
(
response
.
getData
(),
JsonNode
.
class
).
get
(
"Devices"
);
ObjectMapper
configure
=
JsonUtils
.
OM
().
configure
(
MapperFeature
.
ACCEPT_CASE_INSENSITIVE_PROPERTIES
,
true
);
List
<
KylinCameraDevicesVo
>
kylinCameraDevicesVos
=
configure
.
readValue
(
JsonUtils
.
toJson
(
devices
),
new
TypeReference
<
List
<
KylinCameraDevicesVo
>>()
{
});
for
(
KylinCameraDevicesVo
devicesVo
:
kylinCameraDevicesVos
)
{
String
gbId
=
devicesVo
.
getGbId
();
KylinCamera
kylinCamera
=
cameraMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
KylinCamera
.
class
)
.
eq
(
KylinCamera:
:
getGbId
,
gbId
)
);
KylinCamera
camera
=
KylinCamera
.
getNew
();
camera
.
setStatus
(
devicesVo
.
getStatus
());
JsonNode
jsonNode
=
JsonUtils
.
fromJson
(
devicesVo
.
getDescription
(),
JsonNode
.
class
);
int
siteType
=
jsonNode
.
get
(
"siteType"
).
asInt
();
String
fieldId
=
jsonNode
.
get
(
"fieldId"
).
asText
();
camera
.
setSiteType
(
siteType
);
camera
.
setFieldId
(
fieldId
);
if
(
null
==
kylinCamera
)
{
camera
.
setCameraId
(
IDGenerator
.
nextSnowId
());
camera
.
setGbId
(
gbId
);
camera
.
setImgUrl
(
"https://camera.zhengzai.tv/camera/live/"
.
concat
(
gbId
).
concat
(
".jpg"
));
cameraMapper
.
insert
(
camera
);
}
else
{
camera
.
setUpdatedAt
(
LocalDateTime
.
now
());
cameraMapper
.
update
(
camera
,
Wrappers
.
lambdaUpdate
(
KylinCamera
.
class
).
eq
(
KylinCamera:
:
getGbId
,
gbId
)
);
}
}
return
"success"
;
}
catch
(
ClientException
|
JsonProcessingException
e
)
{
log
.
error
(
"获取设备列表Exception:[msg={}, e={}]"
,
e
.
getMessage
(),
e
);
return
"error"
;
}
}
@GetMapping
(
value
=
"detectPedestrian"
)
@ApiOperation
(
"DetectPedestrian"
)
public
String
detectPedestrian
()
{
String
accessKey
=
"LTAI4FxrURzMvvu9reFgwY5o"
;
//您的AccessKeyID
String
accessKeySecret
=
"Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV"
;
//您的AccessKeySecret
String
regionId
=
"cn-beijing"
;
//String file = "/home/admin/file/1.jpg"; //或者本地上传
String
file
=
"https://camera.zhengzai.tv/camera/live/20220101202301070001.jpg"
;
try
{
InputStream
inputStream
=
ViapiFileUtilAdvance
.
buildInputStream
(
file
);
ViapiFileUtilAdvance
fileUtils
=
ViapiFileUtilAdvance
.
getInstance
(
accessKey
,
accessKeySecret
,
regionId
);
String
ossTempFileUrl
=
fileUtils
.
upload
(
inputStream
);
System
.
out
.
println
(
ossTempFileUrl
);
DefaultProfile
profile
=
DefaultProfile
.
getProfile
(
"cn-shanghai"
,
"LTAI4FxrURzMvvu9reFgwY5o"
,
"Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV"
);
IAcsClient
client
=
new
DefaultAcsClient
(
profile
);
DetectPedestrianRequest
request
=
new
DetectPedestrianRequest
();
request
.
setImageURL
(
ossTempFileUrl
);
DetectPedestrianResponse
response
=
client
.
getAcsResponse
(
request
);
System
.
out
.
println
(
new
Gson
().
toJson
(
response
));
return
"success"
;
}
catch
(
Exception
e
)
{
log
.
error
(
"获取设备列表Exception:[msg={}, e={}]"
,
e
.
getMessage
(),
e
);
return
"error"
;
}
}
}
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/utils/ViapiFileUtilAdvance.java
0 → 100644
View file @
a97e0c67
package
com
.
liquidnet
.
service
.
platform
.
utils
;
import
com.aliyun.fileform.models.FileField
;
import
com.aliyun.openplatform20191219.models.AuthorizeFileUploadRequest
;
import
com.aliyun.openplatform20191219.models.AuthorizeFileUploadResponse
;
import
com.aliyun.oss.models.PostObjectRequest
;
import
com.aliyun.tea.TeaConverter
;
import
com.aliyun.tea.TeaPair
;
import
com.aliyun.teautil.models.RuntimeOptions
;
import
com.aliyuncs.DefaultAcsClient
;
import
com.aliyuncs.IAcsClient
;
import
com.aliyuncs.facebody.model.v20191230.DetectPedestrianRequest
;
import
com.aliyuncs.facebody.model.v20191230.DetectPedestrianResponse
;
import
com.aliyuncs.profile.DefaultProfile
;
import
com.google.gson.Gson
;
import
org.apache.commons.lang3.StringUtils
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.net.URL
;
import
java.net.URLConnection
;
import
java.net.URLDecoder
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.concurrent.ConcurrentHashMap
;
public
class
ViapiFileUtilAdvance
{
public
static
void
main
(
String
[]
args
)
throws
Exception
{
String
accessKey
=
"LTAI4FxrURzMvvu9reFgwY5o"
;
//您的AccessKeyID
String
accessKeySecret
=
"Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV"
;
//您的AccessKeySecret
String
regionId
=
"cn-beijing"
;
//String file = "/home/admin/file/1.jpg"; //或者本地上传
String
file
=
"https://camera.zhengzai.tv/camera/live/20220101202301070001.jpg"
;
try
(
InputStream
inputStream
=
buildInputStream
(
file
))
{
ViapiFileUtilAdvance
fileUtils
=
ViapiFileUtilAdvance
.
getInstance
(
accessKey
,
accessKeySecret
,
regionId
);
String
ossTempFileUrl
=
fileUtils
.
upload
(
inputStream
);
System
.
out
.
println
(
ossTempFileUrl
);
DefaultProfile
profile
=
DefaultProfile
.
getProfile
(
"cn-shanghai"
,
"LTAI4FxrURzMvvu9reFgwY5o"
,
"Ym5tfAxOf2zX20MgjikLI3Wz3tlwVV"
);
/** use STS Token
DefaultProfile profile = DefaultProfile.getProfile(
"<your-region-id>", // The region ID
"<your-access-key-id>", // The AccessKey ID of the RAM account
"<your-access-key-secret>", // The AccessKey Secret of the RAM account
"<your-sts-token>"); // STS Token
**/
IAcsClient
client
=
new
DefaultAcsClient
(
profile
);
DetectPedestrianRequest
request
=
new
DetectPedestrianRequest
();
request
.
setImageURL
(
ossTempFileUrl
);
DetectPedestrianResponse
response
=
client
.
getAcsResponse
(
request
);
System
.
out
.
println
(
new
Gson
().
toJson
(
response
));
}
}
public
static
InputStream
buildInputStream
(
String
filePath
)
throws
IOException
{
if
(
StringUtils
.
startsWithAny
(
filePath
,
new
CharSequence
[]{
"http://"
,
"https://"
}))
{
filePath
=
URLDecoder
.
decode
(
filePath
,
"UTF-8"
);
URL
url
=
new
URL
(
filePath
);
URLConnection
urlConnection
=
url
.
openConnection
();
return
urlConnection
.
getInputStream
();
}
else
{
File
key1
=
new
File
(
filePath
);
return
new
FileInputStream
(
key1
);
}
}
public
static
synchronized
ViapiFileUtilAdvance
getInstance
(
String
accessKeyId
,
String
accessKeySecret
,
String
regionId
)
throws
Exception
{
String
mapKey
=
String
.
format
(
"%s:%s:%s"
,
regionId
,
accessKeyId
,
accessKeySecret
);
ViapiFileUtilAdvance
fileUtils
=
_map
.
get
(
mapKey
);
if
(
fileUtils
==
null
)
{
_map
.
putIfAbsent
(
mapKey
,
new
ViapiFileUtilAdvance
(
accessKeyId
,
accessKeySecret
,
regionId
));
fileUtils
=
_map
.
get
(
mapKey
);
}
return
fileUtils
;
}
private
ViapiFileUtilAdvance
(
String
accessKeyId
,
String
accessKeySecret
,
String
regionId
)
throws
Exception
{
Map
<
String
,
Object
>
cm
=
new
HashMap
<>();
cm
.
put
(
"regionId"
,
regionId
);
cm
.
put
(
"autoretry"
,
"true"
);
cm
.
put
(
"accessKeyId"
,
accessKeyId
);
cm
.
put
(
"accessKeySecret"
,
accessKeySecret
);
cm
.
put
(
"connectTimeout"
,
15
*
1000
);
cm
.
put
(
"readTimeout"
,
30
*
1000
);
cm
.
put
(
"maxIdleConns"
,
200
);
cm
.
put
(
"type"
,
"access_key"
);
cm
.
put
(
"endpoint"
,
"openplatform.aliyuncs.com"
);
_runtime
=
RuntimeOptions
.
build
(
cm
);
com
.
aliyun
.
tearpc
.
models
.
Config
authConfig
=
com
.
aliyun
.
tearpc
.
models
.
Config
.
build
(
cm
);
_authClient
=
new
com
.
aliyun
.
openplatform20191219
.
Client
(
authConfig
);
//ossEndpointType = "internal";//aliyun-vpc
_ossConfig
=
com
.
aliyun
.
oss
.
models
.
Config
.
build
(
TeaConverter
.
buildMap
(
new
TeaPair
(
"accessKeySecret"
,
accessKeySecret
),
new
TeaPair
(
"type"
,
"access_key"
),
new
TeaPair
(
"protocol"
,
_authClient
.
_protocol
),
new
TeaPair
(
"regionId"
,
_authClient
.
_regionId
)
));
}
public
String
upload
(
InputStream
inputStream
)
throws
Exception
{
AuthorizeFileUploadRequest
authRequest
=
AuthorizeFileUploadRequest
.
build
(
TeaConverter
.
buildMap
(
new
TeaPair
(
"product"
,
"imageseg"
),
new
TeaPair
(
"regionId"
,
_authClient
.
_regionId
)
));
AuthorizeFileUploadResponse
authResponse
=
_authClient
.
authorizeFileUploadWithOptions
(
authRequest
,
_runtime
);
com
.
aliyun
.
oss
.
models
.
Config
ossConfig
=
new
com
.
aliyun
.
oss
.
models
.
Config
();
com
.
aliyun
.
openapiutil
.
Client
.
convert
(
_ossConfig
,
ossConfig
);
ossConfig
.
accessKeyId
=
authResponse
.
accessKeyId
;
ossConfig
.
endpoint
=
com
.
aliyun
.
openapiutil
.
Client
.
getEndpoint
(
authResponse
.
endpoint
,
authResponse
.
useAccelerate
,
ossEndpointType
);
com
.
aliyun
.
oss
.
Client
ossClient
=
new
com
.
aliyun
.
oss
.
Client
(
ossConfig
);
FileField
fileObj
=
FileField
.
build
(
TeaConverter
.
buildMap
(
new
TeaPair
(
"filename"
,
authResponse
.
objectKey
),
new
TeaPair
(
"content"
,
inputStream
),
new
TeaPair
(
"contentType"
,
""
)
));
PostObjectRequest
.
PostObjectRequestHeader
ossHeader
=
PostObjectRequest
.
PostObjectRequestHeader
.
build
(
TeaConverter
.
buildMap
(
new
TeaPair
(
"accessKeyId"
,
authResponse
.
accessKeyId
),
new
TeaPair
(
"policy"
,
authResponse
.
encodedPolicy
),
new
TeaPair
(
"signature"
,
authResponse
.
signature
),
new
TeaPair
(
"key"
,
authResponse
.
objectKey
),
new
TeaPair
(
"file"
,
fileObj
),
new
TeaPair
(
"successActionStatus"
,
"201"
)
));
PostObjectRequest
uploadRequest
=
PostObjectRequest
.
build
(
TeaConverter
.
buildMap
(
new
TeaPair
(
"bucketName"
,
authResponse
.
bucket
),
new
TeaPair
(
"header"
,
ossHeader
)
));
com
.
aliyun
.
ossutil
.
models
.
RuntimeOptions
ossRuntime
=
new
com
.
aliyun
.
ossutil
.
models
.
RuntimeOptions
();
com
.
aliyun
.
openapiutil
.
Client
.
convert
(
_runtime
,
ossRuntime
);
ossClient
.
postObject
(
uploadRequest
,
ossRuntime
);
String
imageURL
=
"http://"
+
authResponse
.
bucket
+
"."
+
authResponse
.
endpoint
+
"/"
+
authResponse
.
objectKey
+
""
;
return
imageURL
;
}
RuntimeOptions
_runtime
;
com
.
aliyun
.
openplatform20191219
.
Client
_authClient
;
com
.
aliyun
.
oss
.
models
.
Config
_ossConfig
;
String
ossEndpointType
=
null
;
static
Map
<
String
,
ViapiFileUtilAdvance
>
_map
=
new
ConcurrentHashMap
<>();
}
\ No newline at end of file
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