提交 ec22a06d 作者: 方治民

feat: 加入缺失的 IO 关闭操作

上级 753e408f
...@@ -6,6 +6,8 @@ import cn.hutool.core.util.StrUtil; ...@@ -6,6 +6,8 @@ import cn.hutool.core.util.StrUtil;
import com.yiring.common.core.Minio; import com.yiring.common.core.Minio;
import com.yiring.common.service.FileManageService; import com.yiring.common.service.FileManageService;
import com.yiring.common.service.UploadProcessService; import com.yiring.common.service.UploadProcessService;
import java.io.InputStream;
import lombok.Cleanup;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -45,7 +47,9 @@ public class FileManageServiceImpl implements FileManageService { ...@@ -45,7 +47,9 @@ public class FileManageServiceImpl implements FileManageService {
// 上传原文件(如果是转换成了 m3u8 hls 文件则不保存原文件) // 上传原文件(如果是转换成了 m3u8 hls 文件则不保存原文件)
String suffix = ".m3u8"; String suffix = ".m3u8";
if (filename.endsWith(suffix) || !object.endsWith(suffix)) { if (filename.endsWith(suffix) || !object.endsWith(suffix)) {
minio.putObject(file.getInputStream(), file.getContentType(), object); @Cleanup
InputStream stream = file.getInputStream();
minio.putObject(stream, file.getContentType(), object);
} }
return minio.getDefaultURI(object); return minio.getDefaultURI(object);
......
...@@ -76,10 +76,8 @@ public class MinioController { ...@@ -76,10 +76,8 @@ public class MinioController {
) )
@PostMapping(value = "uploadBase64Image") @PostMapping(value = "uploadBase64Image")
public Result<String> uploadBase64Image(@NotBlank(message = "图片 Base64 信息不能为空") String base64Image) { public Result<String> uploadBase64Image(@NotBlank(message = "图片 Base64 信息不能为空") String base64Image) {
try {
// 解析 Base64 图片信息 // 解析 Base64 图片信息
ImageInfo image = FileUtils.parseBase64ImageText(base64Image); try (ImageInfo image = FileUtils.parseBase64ImageText(base64Image)) {
// 获取文件信息以及默认存储地址 // 获取文件信息以及默认存储地址
String uuid = IdUtil.getSnowflakeNextIdStr(); String uuid = IdUtil.getSnowflakeNextIdStr();
String object = minio.buildUploadPath( String object = minio.buildUploadPath(
...@@ -106,9 +104,8 @@ public class MinioController { ...@@ -106,9 +104,8 @@ public class MinioController {
@Operation(summary = "文件下载") @Operation(summary = "文件下载")
@GetMapping(value = "download", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE) @GetMapping(value = "download", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public void download(HttpServletResponse response, @ParameterObject @Validated DownloadParam param) { public void download(HttpServletResponse response, @ParameterObject @Validated DownloadParam param) {
try { try (GetObjectResponse object = minio.getObject(param.getBucket(), param.getObject())) {
StatObjectResponse statObject = minio.objectStat(param.getBucket(), param.getObject()); StatObjectResponse statObject = minio.objectStat(param.getBucket(), param.getObject());
GetObjectResponse object = minio.getObject(param.getBucket(), param.getObject());
long lastModified = Timestamp.from(statObject.lastModified().toInstant()).getTime(); long lastModified = Timestamp.from(statObject.lastModified().toInstant()).getTime();
FileUtils.download( FileUtils.download(
response, response,
......
...@@ -22,7 +22,7 @@ import lombok.NoArgsConstructor; ...@@ -22,7 +22,7 @@ import lombok.NoArgsConstructor;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class ImageInfo implements Serializable { public class ImageInfo implements Serializable, AutoCloseable {
@Serial @Serial
private static final long serialVersionUID = 4042804283860857802L; private static final long serialVersionUID = 4042804283860857802L;
...@@ -61,4 +61,11 @@ public class ImageInfo implements Serializable { ...@@ -61,4 +61,11 @@ public class ImageInfo implements Serializable {
* 图片高度 * 图片高度
*/ */
int height; int height;
@Override
public void close() throws Exception {
if (stream != null) {
stream.close();
}
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论