提交 ec22a06d 作者: 方治民

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

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