java springBoot 图片、视频上传 硬盘
application.properties
设置上传文件的路径 E:/HoliSAS/PMS-Run/
#端口
server.port=8086
#上传文件目录
pmsQuestionLib.upload=E:/HoliSAS/PMS-Run/
#问题描述图片路径
pmsQuestionLib.quesDesc.image=quesDesc/image/
#问题描述视频路径
pmsQuestionLib.quesDesc.video=quesDesc/video/
图片上传 Contrller 层
/**
* 问题库 前端控制器
*
* @author xiezhijan
* @since 2020-03-19
*/
@CrossOrigin
@Api(tags = "问题库api")
@RestController
@RequestMapping("/pmsQuestionLib")
public class PmsQuestionLibController {
// 注解注入
//上传路径
@Value("${pmsQuestionLib.upload}")
private String upload;
// 图片路径
@Value("${pmsQuestionLib.quesDesc.image}")
private String quesDescPic;
// 视频路径
@Value("${pmsQuestionLib.quesDesc.video}")
private String quesDescVideo;
@ApiOperation("问题描述上传图片")
@PostMapping("/descPicUpload")
public ApiResultData descPicUpload(
// 传入文件
@RequestParam(name = "file", required = true) MultipartFile file,
HttpServletRequest request) {
// 新建字符串
StringBuilder stringBuilder = new StringBuilder();
// 拼接字符串
stringBuilder
// 返回当前链接使用的协议;(http)
.append(request.getScheme())
.append("://")
// 获取本地Ip
.append(LocalIpUtil.getIpAddress())
.append(":")
// 服务器端口
.append(serverPort)
// 得到路径
.append(request.getContextPath());
// 得到当前时间
String nowTimeEnYMd = DateUtil.getNowTime_EN_yMd();
// 当前时间戳
Long millis = DateUtil.getLocalDateTimeToMillis(LocalDateTime.now());
// 如果文件是空
if (file.isEmpty()) {
return new ApiResultData(1, "上传失败,请选择文件", "成功");
}
// 重新赋予文件名
String fileName = millis + "/" + file.getOriginalFilename();
// 图片路径
String path = quesDescPic + nowTimeEnYMd + "/" + fileName;
// 文件的最终路径
File filePath = new File(upload + path);
// 如果不存在
if (!filePath.exists()) {
// 创建
filePath.mkdirs();
}
try {
// 转移到
file.transferTo(filePath);
// 字符串拼接 返给前端路径
stringBuilder.append("/").append(path);
return new ApiResultData(1, stringBuilder.toString(), "成功");
} catch (IOException e) {
e.printStackTrace();
}
return new ApiResultData(1, "上传失败", "成功");
}
}
视频上传Contrller
// application.properties通用
@ApiOperation("问题描述上传视频")
@PostMapping("/descVideoUpload")
public ApiResultData descVideoUpload(
@RequestParam(name = "file", required = true) MultipartFile file,
HttpServletRequest request) {
// 新建字符串
StringBuilder stringBuilder = new StringBuilder();
stringBuilder
返回当前链接使用的协议;(http)
.append(request.getScheme())
.append("://")
// 获取本地Ip
.append(LocalIpUtil.getIpAddress())
.append(":")
// 得到端口
.append(serverPort)
// 得到路径
.append(request.getContextPath());
// 当前时间
String nowTimeEnYMd = DateUtil.getNowTime_EN_yMd();
// 当前时间戳
Long millis = DateUtil.getLocalDateTimeToMillis(LocalDateTime.now());
// 是否位空
if (file.isEmpty()) {
return new ApiResultData(1, "上传失败,请选择文件", "成功");
}
// 文件名
String fileName = millis + "/" + file.getOriginalFilename();
// 视频路径
String path = quesDescVideo + nowTimeEnYMd + "/" + fileName;
// 最终路径
File filePath = new File(upload + path);
// 是否有文件夹
if (!filePath.exists()) {
// 创建文件夹
filePath.mkdirs();
}
try {
// 转移到
file.transferTo(filePath);
// 字符串拼接
stringBuilder.append("/").append(path);
return new ApiResultData(1, stringBuilder.toString(), "成功");
} catch (IOException e) {
e.printStackTrace();
}
return new ApiResultData(1, "上传失败", "成功");
}
图片视频的删除 Contrller
@ApiOperation("删除")
@GetMapping("/delete")
// 传入需要删除的视频id
public ApiResultData delete(
@RequestParam(name = "id", required = true) Integer id, HttpServletRequest request) {
// iPmsQuestionLibService 继承 Iservice (实体类需要序列化) 封装删除
PmsQuestionLib pmsQuestionLib = iPmsQuestionLibService.getById(id);
// 问题描述图片路径
delFile(request, pmsQuestionLib.getQuesDescPic());
// 问题描述视频路径
delFile(request, pmsQuestionLib.getQuesDescVideo());
// 整改落实情况-图片路径
delFile(request, pmsQuestionLib.getDealDescPic());
// 整改落实情况-视频路径
delFile(request, pmsQuestionLib.getDealDescVideo());
boolean flag = iPmsQuestionLibService.removeById(id);
return new ApiResultData(1, flag, "成功");
}
// 封装 deFille
private void delFile(HttpServletRequest request, String paths) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder
.append(request.getScheme())
.append("://")
.append(LocalIpUtil.getIpAddress())
.append(":")
.append(serverPort)
.append(request.getContextPath())
.append("/");
;
String replace;
if (StringUtils.isNotBlank(paths)) {
List<String> strings = JSON.parseArray(paths, String.class);
if (CollectionUtils.isNotEmpty(strings)) {
for (String str : strings) {
replace = StringUtils.replace(str, stringBuilder.toString(), upload);
replace = replace.substring(0, replace.lastIndexOf("/"));
File file = new File(replace);
// 删除指定文件,从不引发异常。
FileUtils.deleteQuietly(file);
replace = replace.substring(0, replace.lastIndexOf("/"));
File fileParent = new File(replace);
Optional.ofNullable(fileParent.list())
.ifPresent(
i -> {
if (CollectionUtils.isEmpty(Arrays.asList(i))) {
FileUtils.deleteQuietly(fileParent);
}
});
}
}
}
}
修改
@ApiOperation("修改")
@PostMapping("/update")
public ApiResultData update(
@RequestBody PmsQuestionLibAddPo pmsQuestionLibAddPo, HttpServletRequest request) {
if (CollectionUtils.isNotEmpty(pmsQuestionLibAddPo.getDelQuesDescPics())) {
delFiles(request, pmsQuestionLibAddPo.getDelQuesDescPics());
}
if (CollectionUtils.isNotEmpty(pmsQuestionLibAddPo.getDelQuesDescVideos())) {
delFiles(request, pmsQuestionLibAddPo.getDelQuesDescVideos());
}
if (CollectionUtils.isNotEmpty(pmsQuestionLibAddPo.getDelDealDescPics())) {
delFiles(request, pmsQuestionLibAddPo.getDelDealDescPics());
}
if (CollectionUtils.isNotEmpty(pmsQuestionLibAddPo.getDelDealDescVideos())) {
delFiles(request, pmsQuestionLibAddPo.getDelDealDescVideos());
}
if (CollectionUtils.isEmpty(pmsQuestionLibAddPo.getQuesDescPics())) {
pmsQuestionLibAddPo.setQuesDescPic(null);
} else {
pmsQuestionLibAddPo.setQuesDescPic(JSON.toJSONString(pmsQuestionLibAddPo.getQuesDescPics()));
}
if (CollectionUtils.isEmpty(pmsQuestionLibAddPo.getQuesDescVideos())) {
pmsQuestionLibAddPo.setQuesDescVideo(null);
} else {
pmsQuestionLibAddPo.setQuesDescVideo(
JSON.toJSONString(pmsQuestionLibAddPo.getQuesDescVideos()));
}
if (CollectionUtils.isEmpty(pmsQuestionLibAddPo.getDealDescPics())) {
pmsQuestionLibAddPo.setDealDescPic(null);
} else {
pmsQuestionLibAddPo.setDealDescPic(JSON.toJSONString(pmsQuestionLibAddPo.getDealDescPics()));
}
if (CollectionUtils.isEmpty(pmsQuestionLibAddPo.getDealDescVideos())) {
pmsQuestionLibAddPo.setDealDescVideo(null);
} else {
pmsQuestionLibAddPo.setDealDescVideo(
JSON.toJSONString(pmsQuestionLibAddPo.getDealDescVideos()));
}
// 封装好进库
boolean flag = iPmsQuestionLibService.updateById(pmsQuestionLibAddPo);
return new ApiResultData(1, flag, "成功");
}
图片视频保存 Contrller
@ApiOperation("保存")
@PostMapping("/save")
public ApiResultData save(
@RequestBody PmsQuestionLibAddPo pmsQuestionLibAddPo, HttpServletRequest request) {
if (CollectionUtils.isNotEmpty(pmsQuestionLibAddPo.getDelQuesDescPics())) {
delFiles(request, pmsQuestionLibAddPo.getDelQuesDescPics());
}
if (CollectionUtils.isNotEmpty(pmsQuestionLibAddPo.getDelQuesDescVideos())) {
delFiles(request, pmsQuestionLibAddPo.getDelQuesDescVideos());
}
if (CollectionUtils.isNotEmpty(pmsQuestionLibAddPo.getDelDealDescPics())) {
delFiles(request, pmsQuestionLibAddPo.getDelDealDescPics());
}
if (CollectionUtils.isNotEmpty(pmsQuestionLibAddPo.getDelDealDescVideos())) {
delFiles(request, pmsQuestionLibAddPo.getDelDealDescVideos());
}
if (CollectionUtils.isEmpty(pmsQuestionLibAddPo.getQuesDescPics())) {
pmsQuestionLibAddPo.setQuesDescPic(null);
} else {
pmsQuestionLibAddPo.setQuesDescPic(JSON.toJSONString(pmsQuestionLibAddPo.getQuesDescPics()));
}
if (CollectionUtils.isEmpty(pmsQuestionLibAddPo.getQuesDescVideos())) {
pmsQuestionLibAddPo.setQuesDescVideo(null);
} else {
pmsQuestionLibAddPo.setQuesDescVideo(
JSON.toJSONString(pmsQuestionLibAddPo.getQuesDescVideos()));
}
if (CollectionUtils.isEmpty(pmsQuestionLibAddPo.getDealDescPics())) {
pmsQuestionLibAddPo.setDealDescPic(null);
} else {
pmsQuestionLibAddPo.setDealDescPic(JSON.toJSONString(pmsQuestionLibAddPo.getDealDescPics()));
}
if (CollectionUtils.isEmpty(pmsQuestionLibAddPo.getDealDescVideos())) {
pmsQuestionLibAddPo.setDealDescVideo(null);
} else {
pmsQuestionLibAddPo.setDealDescVideo(
JSON.toJSONString(pmsQuestionLibAddPo.getDealDescVideos()));
}
// 封装好进库
boolean flag = iPmsQuestionLibService.save(pmsQuestionLibAddPo);
return new ApiResultData(1, flag, "成功");
}