在 Java Spring Boot 应用中实现文件和图片的上传以及渲染,通常涉及以下几个步骤:
配置文件上传:使用 Spring Boot 的 MultipartResolver 来配置文件上传。 创建上传接口:创建一个 REST
控制器来处理上传请求。 保存文件到服务器:将上传的文件保存到服务器的文件系统或对象存储服务。 渲染图片:提供接口来访问和渲染图片。
以下是一个简单的示例,展示如何在 Spring Boot 应用中实现这些功能。
/**
* 上传照片
*
* @Author dxw
*/
@PostMapping("upload")
public R<Object> upload(MultipartFile file, HttpServletRequest request) {
if (file.isEmpty()) {
return R.fail("上传文件不能为空");
}
String fileName = file.getOriginalFilename();
String suffix = "";
int dotIndex = fileName.lastIndexOf('.');
if (dotIndex > 0) {
suffix = "." + fileName.substring(dotIndex + 1);
}
String format = path + formatter.format(LocalDateTime.now());
String realPath = Configure.bucket_path + format;
File folder = new File(realPath);
if (!folder.exists()) {
folder.mkdirs();
}
String newName = UUID.randomUUID() + suffix;
File destFile = new File(folder, newName);
try {
file.transferTo(destFile);
String url = format + newName;
OssFileEntity ossFileEntity = new OssFileEntity();
ossFileEntity.setCreateTime(DateUtil.date());
ossFileEntity.setUrl(url);
ossFileEntity.setDelFlag("0");
ossFileEntity.setStatus("2");
ossFileEntity.setLoginIp(request.getRemoteAddr());
int insert = ossFileMapper.insert(ossFileEntity);
if (insert > 0) {
return R.ok(ossFileEntity.getId());
} else {
return R.fail("文件上传失败");
}
} catch (IOException e) {
// 记录异常信息
e.printStackTrace();
return R.fail("文件上传异常");
}
}
根据id渲染图片
/**
* 上传图片_根据id查询文件
*
* @return
*/
@GetMapping("oss/{id}")
public R<Object> getOssResource(@PathVariable String id, HttpServletRequest request) {
OssFileEntity ossFileEntity = ossFileMapper.selectById(id);
if (Objects.isNull(ossFileEntity)) {
return R.fail("文件不存在");
}
if (!Files.exists(Paths.get(Configure.bucket_path + ossFileEntity.getUrl()))) {
return R.fail("文件不存在");
}
String remoteAddr = request.getRemoteAddr();
if (remoteAddr.contains("192")||remoteAddr.contains("172")) {
remoteAddr = domainNamePath;
return R.ok("文件存在",remoteAddr + ":" + 9001 + "/file/" + ossFileEntity.getUrl());
}else {
return R.ok("文件存在",remoteAddr + ":" + port + "/file/" + ossFileEntity.getUrl());
}
}