Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cloud-platform
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
youjj
cloud-platform
Commits
a55aac3d
Commit
a55aac3d
authored
May 24, 2019
by
hezhen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加图片上传接口
parent
ddef924c
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
398 additions
and
0 deletions
+398
-0
UploadController.java
.../xxfc/platform/universal/controller/UploadController.java
+210
-0
ResCode.java
...a/com/xxfc/platform/vehicle/constant/ResCode/ResCode.java
+1
-0
VehicleUserLicense.java
.../com/xxfc/platform/vehicle/entity/VehicleUserLicense.java
+46
-0
VehicleUserLicenseVo.java
...va/com/xxfc/platform/vehicle/vo/VehicleUserLicenseVo.java
+32
-0
VehicleLicenseBiz.java
...java/com/xxfc/platform/vehicle/biz/VehicleLicenseBiz.java
+56
-0
VehicleLicenseMapper.java
...om/xxfc/platform/vehicle/mapper/VehicleLicenseMapper.java
+8
-0
VehicleLicenseController.java
.../xxfc/platform/vehicle/rest/VehicleLicenseController.java
+45
-0
No files found.
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/controller/UploadController.java
0 → 100644
View file @
a55aac3d
package
com
.
xxfc
.
platform
.
universal
.
controller
;
import
java.io.File
;
import
java.io.FileOutputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.UUID
;
import
javax.servlet.ServletException
;
import
javax.servlet.http.HttpServlet
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.wxiaoqi.security.common.util.process.ResultCode
;
import
com.github.wxiaoqi.security.common.util.result.JsonResultUtil
;
import
org.apache.commons.fileupload.FileItem
;
import
org.apache.commons.fileupload.FileUploadBase
;
import
org.apache.commons.fileupload.ProgressListener
;
import
org.apache.commons.fileupload.disk.DiskFileItemFactory
;
import
org.apache.commons.fileupload.servlet.ServletFileUpload
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* Servlet implementation class FileDemo
*/
@RestController
@RequestMapping
(
"file"
)
public
class
UploadController
{
/**
*
*/
private
static
final
long
serialVersionUID
=
564190060577130813L
;
@RequestMapping
(
value
=
"/app/unauth/upload"
,
method
=
RequestMethod
.
POST
)
public
JSONObject
doGet
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
ServletException
,
IOException
{
//得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
String
savePath
=
"D:/hezhen/upload"
;
//上传时生成的临时文件保存目录
String
tempPath
=
"D:/hezhen/temp"
;
File
tmpFile
=
new
File
(
tempPath
);
if
(!
tmpFile
.
exists
())
{
//创建临时目录
tmpFile
.
mkdir
();
}
// 组织返回结果集
JSONObject
result
=
new
JSONObject
();
List
<
String
>
urls
=
new
ArrayList
<>();
try
{
//使用Apache文件上传组件处理文件上传步骤:
//1、创建一个DiskFileItemFactory工厂
DiskFileItemFactory
factory
=
new
DiskFileItemFactory
();
//设置工厂的缓冲区的大小,当上传的文件大小超过缓冲区的大小时,就会生成一个临时文件存放到指定的临时目录当中。
factory
.
setSizeThreshold
(
1024
*
100
);
//设置缓冲区的大小为100KB,如果不指定,那么缓冲区的大小默认是10KB
//设置上传时生成的临时文件的保存目录
factory
.
setRepository
(
tmpFile
);
//2、创建一个文件上传解析器
ServletFileUpload
upload
=
new
ServletFileUpload
(
factory
);
//监听文件上传进度
upload
.
setProgressListener
(
new
ProgressListener
(){
public
void
update
(
long
pBytesRead
,
long
pContentLength
,
int
arg2
)
{
System
.
out
.
println
(
"文件大小为:"
+
pContentLength
+
",当前已处理:"
+
pBytesRead
);
/**
* 文件大小为:14608,当前已处理:4096
文件大小为:14608,当前已处理:7367
文件大小为:14608,当前已处理:11419
文件大小为:14608,当前已处理:14608
*/
float
f
=
pBytesRead
/
pContentLength
;
try
{
response
.
getWriter
().
write
(
f
+
""
);
}
catch
(
IOException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
}
});
//解决上传文件名的中文乱码
upload
.
setHeaderEncoding
(
"UTF-8"
);
//3、判断提交上来的数据是否是上传表单的数据
if
(!
ServletFileUpload
.
isMultipartContent
(
request
)){
//按照传统方式获取数据
return
JsonResultUtil
.
createDefaultFail
();
}
//设置上传单个文件的大小的最大值,目前是设置为1024*1024字节,也就是1MB
upload
.
setFileSizeMax
(
1024
*
1024
);
//设置上传文件总量的最大值,最大值=同时上传的多个文件的大小的最大值的和,目前设置为10MB
upload
.
setSizeMax
(
1024
*
1024
*
10
);
//4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
List
<
FileItem
>
list
=
upload
.
parseRequest
(
request
);
for
(
FileItem
item
:
list
){
//如果fileitem中封装的是普通输入项的数据
if
(
item
.
isFormField
()){
String
name
=
item
.
getFieldName
();
//解决普通输入项的数据的中文乱码问题
String
value
=
item
.
getString
(
"UTF-8"
);
//value = new String(value.getBytes("iso8859-1"),"UTF-8");
System
.
out
.
println
(
name
+
"="
+
value
);
}
else
{
//如果fileitem中封装的是上传文件
//得到上传的文件名称,
String
filename
=
item
.
getName
();
System
.
out
.
println
(
filename
);
if
(
filename
==
null
||
filename
.
trim
().
equals
(
""
)){
continue
;
}
//注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如: c:\a\b\1.txt,而有些只是单纯的文件名,如:1.txt
//处理获取到的上传文件的文件名的路径部分,只保留文件名部分
filename
=
filename
.
substring
(
filename
.
lastIndexOf
(
"\\"
)+
1
);
//得到上传文件的扩展名
String
fileExtName
=
filename
.
substring
(
filename
.
lastIndexOf
(
"."
)+
1
);
//如果需要限制上传的文件类型,那么可以通过文件的扩展名来判断上传的文件类型是否合法
System
.
out
.
println
(
"上传的文件的扩展名是:"
+
fileExtName
);
//获取item中的上传文件的输入流
InputStream
in
=
item
.
getInputStream
();
//得到文件保存的名称
String
saveFilename
=
makeFileName
(
filename
);
//得到文件的保存目录
String
realSavePath
=
makePath
(
saveFilename
,
savePath
);
System
.
out
.
println
(
realSavePath
);
urls
.
add
(
realSavePath
);
//创建一个文件输出流
FileOutputStream
out
=
new
FileOutputStream
(
realSavePath
+
"\\"
+
saveFilename
);
//创建一个缓冲区
byte
buffer
[]
=
new
byte
[
1024
];
//判断输入流中的数据是否已经读完的标识
int
len
=
0
;
//循环将输入流读入到缓冲区当中,(len=in.read(buffer))>0就表示in里面还有数据
while
((
len
=
in
.
read
(
buffer
))>
0
){
//使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(savePath + "\\" + filename)当中
out
.
write
(
buffer
,
0
,
len
);
}
//关闭输入流
in
.
close
();
//关闭输出流
out
.
close
();
//删除处理文件上传时生成的临时文件
item
.
delete
();
System
.
out
.
println
(
"文件上传成功!"
);
}
}
}
catch
(
FileUploadBase
.
FileSizeLimitExceededException
e
)
{
e
.
printStackTrace
();
return
JsonResultUtil
.
createFailedResult
(
ResultCode
.
EXCEPTION_CODE
,
"单个文件超出最大值!!!"
);
}
catch
(
FileUploadBase
.
SizeLimitExceededException
e
)
{
e
.
printStackTrace
();
return
JsonResultUtil
.
createFailedResult
(
ResultCode
.
EXCEPTION_CODE
,
"上传文件的总的大小超出限制的最大值!!!"
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
JsonResultUtil
.
createFailedResult
(
ResultCode
.
EXCEPTION_CODE
,
"文件上传失败!"
);
}
if
(
urls
.
size
()>
0
){
result
.
put
(
"url"
,
urls
);
return
JsonResultUtil
.
createSuccessResultWithObj
(
result
);
}
return
JsonResultUtil
.
createDefaultFail
();
}
/**
* @Method: makeFileName
* @Description: 生成上传文件的文件名,文件名以:uuid+"_"+文件的原始名称
* @param filename 文件的原始名称
* @return uuid+"_"+文件的原始名称
*/
private
String
makeFileName
(
String
filename
){
//2.jpg
//为防止文件覆盖的现象发生,要为上传文件产生一个唯一的文件名
return
UUID
.
randomUUID
().
toString
()
+
"_"
+
filename
;
}
/**
* 为防止一个目录下面出现太多文件,要使用hash算法打散存储
* @Method: makePath
* @Description:
*
* @param filename 文件名,要根据文件名生成存储目录
* @param savePath 文件存储路径
* @return 新的存储目录
*/
private
String
makePath
(
String
filename
,
String
savePath
){
//得到文件名的hashCode的值,得到的就是filename这个字符串对象在内存中的地址
int
hashcode
=
filename
.
hashCode
();
int
dir1
=
hashcode
&
0xf
;
//0--15
int
dir2
=
(
hashcode
&
0xf0
)>>
4
;
//0-15
//构造新的保存目录
String
dir
=
savePath
+
"\\"
+
dir1
+
"\\"
+
dir2
;
//upload\2\3 upload\3\5
//File既可以代表文件也可以代表目录
File
file
=
new
File
(
dir
);
//如果目录不存在
if
(!
file
.
exists
()){
//创建目录
file
.
mkdirs
();
}
return
dir
;
}
public
void
doPost
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
ServletException
,
IOException
{
doGet
(
request
,
response
);
}
}
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/constant/ResCode/ResCode.java
View file @
a55aac3d
...
@@ -7,6 +7,7 @@ public enum ResCode {
...
@@ -7,6 +7,7 @@ public enum ResCode {
INVALID_REST_REQ_PARAM
(
100000
,
"rest请求参数非法"
),
INVALID_REST_REQ_PARAM
(
100000
,
"rest请求参数非法"
),
//车辆信息相关返回码-预定信息
//车辆信息相关返回码-预定信息
VEHICLE_BOOKED_INFO_ALREADY_CHANGED
(
101001
,
"车辆预定信息已更改,请刷新后继续操作"
),
VEHICLE_BOOKED_INFO_ALREADY_CHANGED
(
101001
,
"车辆预定信息已更改,请刷新后继续操作"
),
...
...
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/entity/VehicleUserLicense.java
0 → 100644
View file @
a55aac3d
package
com
.
xxfc
.
platform
.
vehicle
.
entity
;
import
lombok.Data
;
import
javax.persistence.Column
;
import
javax.persistence.Id
;
import
javax.persistence.Table
;
/**
* 驾驶人信息表
*/
@Table
(
name
=
"vehicle_user_license"
)
@Data
public
class
VehicleUserLicense
{
@Id
private
Integer
id
;
//用户id
private
Long
userid
;
//手机号
private
String
phone
;
//身份证号
@Column
(
name
=
"id_card"
)
private
String
idCard
;
//驾驶证
private
String
license
;
//正面照
private
String
img
;
//反面照
private
String
fimg
;
//更新时间
@Column
(
name
=
"update_time"
)
private
Long
updateTime
;
private
Integer
isdel
;
}
\ No newline at end of file
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/vo/VehicleUserLicenseVo.java
0 → 100644
View file @
a55aac3d
package
com
.
xxfc
.
platform
.
vehicle
.
vo
;
/**
* 驾驶人信息表
*/
public
class
VehicleUserLicenseVo
{
private
Integer
id
;
//用户id
private
Long
userid
;
//手机号
private
String
phone
;
//身份证号
private
String
idCard
;
//驾驶证
private
String
license
;
//正面照
private
String
img
;
//反面照
private
String
fimg
;
}
\ No newline at end of file
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/biz/VehicleLicenseBiz.java
0 → 100644
View file @
a55aac3d
package
com
.
xxfc
.
platform
.
vehicle
.
biz
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageInfo
;
import
com.github.wxiaoqi.security.common.biz.BaseBiz
;
import
com.xxfc.platform.vehicle.common.RestResponse
;
import
com.xxfc.platform.vehicle.entity.Campsite
;
import
com.xxfc.platform.vehicle.entity.VehicleUserLicense
;
import
com.xxfc.platform.vehicle.feign.dto.AppUserDTO
;
import
com.xxfc.platform.vehicle.feign.dto.UserDTO
;
import
com.xxfc.platform.vehicle.mapper.VehicleLicenseMapper
;
import
com.xxfc.platform.vehicle.vo.PageDataVO
;
import
com.xxfc.platform.vehicle.vo.VehicleUserLicenseVo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
tk.mybatis.mapper.entity.Example
;
import
static
com
.
github
.
wxiaoqi
.
security
.
auth
.
common
.
constatns
.
CommonConstants
.
DATA_ALL_FALSE
;
import
static
com
.
xxfc
.
platform
.
vehicle
.
constant
.
DbColumnConstant
.
COMPANY_ZONE_ID
;
import
static
com
.
xxfc
.
platform
.
vehicle
.
constant
.
DbColumnConstant
.
ID
;
@Service
@Slf4j
public
class
VehicleLicenseBiz
extends
BaseBiz
<
VehicleLicenseMapper
,
VehicleUserLicense
>
{
//更新
@Transactional
public
RestResponse
update
(
VehicleUserLicenseVo
licenseVo
){
VehicleUserLicense
vehicleUserLicense
=
new
VehicleUserLicense
();
BeanUtils
.
copyProperties
(
licenseVo
,
vehicleUserLicense
);
vehicleUserLicense
.
setUpdateTime
(
System
.
currentTimeMillis
()/
1000
);
if
(
vehicleUserLicense
.
getId
()==
null
||
vehicleUserLicense
.
getId
()==
0
){
mapper
.
insertSelective
(
vehicleUserLicense
);
}
else
{
mapper
.
updateByPrimaryKeySelective
(
vehicleUserLicense
);
}
return
RestResponse
.
suc
();
}
public
PageDataVO
<
VehicleUserLicense
>
getAllByUserid
(
Integer
page
,
Integer
limit
,
Integer
userid
){
Example
example
=
new
Example
(
VehicleUserLicense
.
class
);
Example
.
Criteria
criteria
=
example
.
createCriteria
();
criteria
.
andEqualTo
(
"userid"
,
userid
);
example
.
setOrderByClause
(
"`id` desc"
);
PageHelper
.
startPage
(
page
,
limit
);
PageInfo
<
VehicleUserLicense
>
campsitePageInfo
=
new
PageInfo
<
VehicleUserLicense
>(
mapper
.
selectByExample
(
example
));
return
PageDataVO
.
pageInfo
(
campsitePageInfo
);
}
}
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/mapper/VehicleLicenseMapper.java
0 → 100644
View file @
a55aac3d
package
com
.
xxfc
.
platform
.
vehicle
.
mapper
;
import
com.xxfc.platform.vehicle.entity.VehicleUserLicense
;
import
tk.mybatis.mapper.common.Mapper
;
public
interface
VehicleLicenseMapper
extends
Mapper
<
VehicleUserLicense
>
{
}
\ No newline at end of file
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/rest/VehicleLicenseController.java
0 → 100644
View file @
a55aac3d
package
com
.
xxfc
.
platform
.
vehicle
.
rest
;
import
com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken
;
import
com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken
;
import
com.xxfc.platform.vehicle.biz.VehicleLicenseBiz
;
import
com.xxfc.platform.vehicle.biz.VehiclePlatCataBiz
;
import
com.xxfc.platform.vehicle.common.RestResponse
;
import
com.xxfc.platform.vehicle.common.VehicleBaseController
;
import
com.xxfc.platform.vehicle.constant.ResCode.ResCode
;
import
com.xxfc.platform.vehicle.entity.VehicleUserLicense
;
import
com.xxfc.platform.vehicle.feign.dto.AppUserDTO
;
import
com.xxfc.platform.vehicle.vo.CataVo
;
import
com.xxfc.platform.vehicle.vo.PageDataVO
;
import
com.xxfc.platform.vehicle.vo.VehicleUserLicenseVo
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.*
;
@RestController
@RequestMapping
(
"/user"
)
@Slf4j
@IgnoreClientToken
public
class
VehicleLicenseController
extends
VehicleBaseController
<
VehicleLicenseBiz
>
{
@RequestMapping
(
value
=
"/license/update"
,
method
=
RequestMethod
.
POST
)
public
RestResponse
update
(
@RequestBody
VehicleUserLicenseVo
licenseVo
)
throws
Exception
{
return
baseBiz
.
update
(
licenseVo
);
}
@RequestMapping
(
value
=
"/license/all"
,
method
=
RequestMethod
.
POST
)
public
RestResponse
<
PageDataVO
<
VehicleUserLicense
>>
all
(
@RequestParam
(
value
=
"page"
,
defaultValue
=
"1"
)
Integer
page
,
@RequestParam
(
value
=
"limit"
,
defaultValue
=
"10"
)
Integer
limit
)
throws
Exception
{
AppUserDTO
userDTO
=
getUserInfo
();
if
(
userDTO
==
null
){
return
RestResponse
.
code
(
ResCode
.
INVALID_REST_REQ_PARAM
.
getCode
());
}
return
RestResponse
.
suc
(
baseBiz
.
getAllByUserid
(
page
,
limit
,
userDTO
.
getId
()));
}
}
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