登录上传 mov 文件异常的问题,删除临时文件

This commit is contained in:
Jack 2025-09-04 17:45:51 +08:00
parent cbbe21f1b8
commit 6df346f3f7
2 changed files with 154 additions and 127 deletions

View File

@ -174,78 +174,92 @@ public class OssServiceImpl implements OssService {
String url = null; String url = null;
Integer uploadType = configService.getConfig("upload", 1); Integer uploadType = configService.getConfig("upload", 1);
if (uploadType.equals(1)) {
url = ConfigConstant.URL_BASE + "/admin/oss/upload/" + dir + "/" + uploadName; // 文件本地路径
} else if (uploadType.equals(2)) {
// oss 服务
try {
url = uploadObject2OSS(new File(uploadPath), ALIYUN_OSS_DIR_PREFIX.concat("/").concat(dir).concat(uploadName));
} catch (Exception e) {
e.printStackTrace();
logger.error("文件上传失败!", e);
return null;
}
} else if (uploadType.equals(4)) {
url = uploadObject4OSS(new File(uploadPath), TENGXUN_DEFAULT_DIR.concat("/").concat(dir).concat("/").concat(uploadName));
}
String media_duration = "";
try { try {
media_duration = VideoUtil.getFormatDuration(uploadPath); if (uploadType.equals(1)) {
} catch (IOException e) { url = ConfigConstant.URL_BASE + "/admin/oss/upload/" + dir + "/" + uploadName; // 文件本地路径
throw new ApiException(String.format(I18nUtil._("解析音视频时长异常url【%s】"), uploadPath)); } else if (uploadType.equals(2)) {
} // oss 服务
//截图
//todo 放入upload中
String thumb_file_url = "";
if (VideoUtil.videoAllowFiles.contains(VideoUtil.getVideoFormat(uploadPath))) {
String cover_path = uploadPath.replace("." + VideoUtil.getVideoFormat(uploadPath), ".jpg");
String cover_upname = uploadName.replace("." + VideoUtil.getVideoFormat(uploadName), ".jpg");
if (VideoUtil.getVideoCover(uploadPath, cover_path, 1, "375*667")) {
try { try {
thumb_file_url = uploadObject2OSS(new File(cover_path), ALIYUN_OSS_DIR_PREFIX.concat("/").concat(dir).concat("/").concat(cover_upname)); url = uploadObject2OSS(new File(uploadPath), ALIYUN_OSS_DIR_PREFIX.concat("/").concat(dir).concat(uploadName));
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
logger.error("文件上传失败!", e);
return null;
}
} else if (uploadType.equals(4)) {
url = uploadObject4OSS(new File(uploadPath), TENGXUN_DEFAULT_DIR.concat("/").concat(dir).concat("/").concat(uploadName));
}
String media_duration = "";
try {
media_duration = VideoUtil.getFormatDuration(uploadPath);
} catch (IOException e) {
throw new ApiException(String.format(I18nUtil._("解析音视频时长异常url【%s】"), uploadPath));
}
//截图
//todo 放入upload中
String thumb_file_url = "";
if (VideoUtil.videoAllowFiles.contains(VideoUtil.getVideoFormat(uploadPath))) {
String cover_path = uploadPath.replace("." + VideoUtil.getVideoFormat(uploadPath), ".jpg");
String cover_upname = uploadName.replace("." + VideoUtil.getVideoFormat(uploadName), ".jpg");
if (VideoUtil.getVideoCover(uploadPath, cover_path, 1, "375*667")) {
try {
thumb_file_url = uploadObject2OSS(new File(cover_path), ALIYUN_OSS_DIR_PREFIX.concat("/").concat(dir).concat("/").concat(cover_upname));
} catch (Exception e) {
e.printStackTrace();
thumb_file_url = "";
}
} else {
thumb_file_url = ""; thumb_file_url = "";
} }
} else { }
thumb_file_url = "";
// 保存文件信息
MediaDTO mediaDTO = new MediaDTO();
String name = file.getOriginalFilename();
long size = file.getSize();
mediaDTO.setMedia_name(name);
mediaDTO.setMedia_alt(name);
mediaDTO.setMedia_size(size);
mediaDTO.setMedia_url(url);
mediaDTO.setMedia_order(1);
mediaDTO.setMedia_path("/".concat(dir).concat("/").concat(uploadName));
mediaDTO.setMedia_domain(getOssUrlPrefix().concat(ALIYUN_OSS_DIR_PREFIX));
mediaDTO.setMedia_time(new Date());
mediaDTO.setMedia_desc("");
mediaDTO.setMedia_duration(media_duration);
shopStoreMediaService.saveMedia(mediaDTO, user);
Map result = new HashMap<>();
result.put("media_duration", media_duration);
result.put("media_url", url);
result.put("thumb", thumb_file_url);
return result;
} finally {
// 删除临时文件
try {
File tempFile = new File(uploadPath);
if (tempFile.exists()) {
tempFile.delete();
logger.info("临时文件已删除: {}", uploadPath);
}
// 同时删除可能创建的封面文件
String coverPath = uploadPath.replace("." + VideoUtil.getVideoFormat(uploadPath), ".jpg");
File coverFile = new File(coverPath);
if (coverFile.exists()) {
coverFile.delete();
logger.info("临时封面文件已删除: {}", coverPath);
}
} catch (Exception e) {
logger.warn("删除临时文件失败: {}", uploadPath, e);
} }
} }
// 保存文件信息
MediaDTO mediaDTO = new MediaDTO();
String name = file.getOriginalFilename();
long size = file.getSize();
mediaDTO.setMedia_name(name);
mediaDTO.setMedia_alt(name);
mediaDTO.setMedia_size(size);
mediaDTO.setMedia_url(url);
mediaDTO.setMedia_order(1);
mediaDTO.setMedia_path("/".concat(dir).concat("/").concat(fileName));
if (uploadType.equals(1)) {
mediaDTO.setMedia_domain(ConfigConstant.URL_BASE);
} else if (uploadType.equals(2)) {
mediaDTO.setMedia_domain(getOssUrlPrefix().concat(ALIYUN_OSS_DIR_PREFIX));
} else if (uploadType.equals(4)) {
mediaDTO.setMedia_domain(TENGXUN_ENDPOINT.concat("/").concat(TENGXUN_DEFAULT_DIR));
}
mediaDTO.setMedia_time(new Date());
mediaDTO.setMedia_desc("");
mediaDTO.setMedia_duration(media_duration);
shopStoreMediaService.saveMedia(mediaDTO, user);
Map result = new HashMap<>();
result.put("media_duration", media_duration);
result.put("media_url", url);
result.put("thumb", thumb_file_url);
return result;
} }
public Map upload(MultipartFile file, UserDto user) { public Map upload(MultipartFile file, UserDto user) {

View File

@ -182,78 +182,91 @@ public class OssServiceImpl implements OssService {
String ossUrl = null; String ossUrl = null;
Integer uploadType = configService.getConfig("upload", 1); Integer uploadType = configService.getConfig("upload", 1);
if (uploadType.equals(1)) {
ossUrl = ConfigConstant.URL_BASE + "/admin/oss/upload/" + dir + "/" + uploadName; // 文件本地路径
} else if (uploadType.equals(2)) {
// oss 服务
try {
ossUrl = uploadObject2OSS(new File(uploadPath), ALIYUN_OSS_DIR_PREFIX.concat("/").concat(dir).concat("/").concat(uploadName), null, null, null);
} catch (Exception e) {
e.printStackTrace();
logger.error("文件上传失败!", e);
return null;
}
} else if (uploadType.equals(4)) {
ossUrl = uploadObject4OSS(new File(uploadPath), TENGXUN_DEFAULT_DIR.concat("/").concat(dir).concat("/").concat(uploadName));
}
String media_duration = "";
try { try {
media_duration = VideoUtil.getFormatDuration(uploadPath); if (uploadType.equals(1)) {
} catch (IOException e) { ossUrl = ConfigConstant.URL_BASE + "/admin/oss/upload/" + dir + "/" + uploadName; // 文件本地路径
throw new ApiException(String.format(I18nUtil._("解析音视频时长异常url【%s】"), uploadPath)); } else if (uploadType.equals(2)) {
} // oss 服务
//截图
//todo 放入upload中
String thumb_file_url = "";
if (VideoUtil.videoAllowFiles.contains(VideoUtil.getVideoFormat(uploadPath))) {
// String cover_path = uploadPath.replace("." + VideoUtil.getVideoFormat(uploadPath), ".jpg");
String cover_upname = uploadName.replace("." + VideoUtil.getVideoFormat(uploadName), ".jpg");
String floder = ALIYUN_OSS_DIR_PREFIX.concat("/") + dir + "/video/frame1/";
try {
thumb_file_url = videoUtil.getVideoCoverV2(ossUrl, floder, cover_upname);
} catch (Exception e) {
logger.error("获取视频封面失败: ", e);
thumb_file_url = "";
}
/*if (VideoUtil.getVideoCover(uploadPath, cover_path, 1, "375*667")) {
try { try {
thumb_file_url = uploadObject2OSS(new File(cover_path), ALIYUN_OSS_DIR_PREFIX.concat("/").concat(dir).concat(cover_upname), null, null, null); ossUrl = uploadObject2OSS(new File(uploadPath), ALIYUN_OSS_DIR_PREFIX.concat("/").concat(dir).concat("/").concat(uploadName), null, null, null);
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
logger.error("文件上传失败!", e);
return null;
}
} else if (uploadType.equals(4)) {
ossUrl = uploadObject4OSS(new File(uploadPath), TENGXUN_DEFAULT_DIR.concat("/").concat(dir).concat("/").concat(uploadName));
}
String media_duration = "";
try {
media_duration = VideoUtil.getFormatDuration(uploadPath);
} catch (IOException e) {
throw new ApiException(String.format(I18nUtil._("解析音视频时长异常url【%s】"), uploadPath));
}
//截图
//todo 放入upload中
String thumb_file_url = "";
if (VideoUtil.videoAllowFiles.contains(VideoUtil.getVideoFormat(uploadPath))) {
// String cover_path = uploadPath.replace("." + VideoUtil.getVideoFormat(uploadPath), ".jpg");
String cover_upname = uploadName.replace("." + VideoUtil.getVideoFormat(uploadName), ".jpg");
String floder = ALIYUN_OSS_DIR_PREFIX.concat("/") + dir + "/video/frame1/";
try {
thumb_file_url = videoUtil.getVideoCoverV2(ossUrl, floder, cover_upname);
} catch (Exception e) {
logger.error("获取视频封面失败: ", e);
thumb_file_url = ""; thumb_file_url = "";
} }
} else { /*if (VideoUtil.getVideoCover(uploadPath, cover_path, 1, "375*667")) {
thumb_file_url = ""; try {
}*/ thumb_file_url = uploadObject2OSS(new File(cover_path), ALIYUN_OSS_DIR_PREFIX.concat("/").concat(dir).concat(cover_upname), null, null, null);
} catch (Exception e) {
e.printStackTrace();
thumb_file_url = "";
}
} else {
thumb_file_url = "";
}*/
}
// 保存文件信息
MediaDTO mediaDTO = new MediaDTO();
String name = file.getOriginalFilename();
long size = file.getSize();
mediaDTO.setMedia_name(name);
mediaDTO.setMedia_alt(name);
mediaDTO.setMedia_size(size);
mediaDTO.setMedia_url(ossUrl);
mediaDTO.setMedia_order(1);
mediaDTO.setMedia_path("/".concat(dir).concat("/").concat(uploadName));
mediaDTO.setMedia_domain(getOssUrlPrefix().concat(ALIYUN_OSS_DIR_PREFIX));
mediaDTO.setMedia_time(new Date());
mediaDTO.setMedia_desc("");
mediaDTO.setMedia_duration(media_duration);
shopStoreMediaService.saveMedia(mediaDTO, user);
Map result = new HashMap<>();
result.put("media_duration", media_duration);
result.put("media_url", ossUrl);
result.put("thumb", thumb_file_url);
return result;
} finally {
// 删除临时文件
try {
File tempFile = new File(uploadPath);
if (tempFile.exists()) {
tempFile.delete();
logger.info("临时文件已删除: {}", uploadPath);
}
} catch (Exception e) {
logger.warn("删除临时文件失败: {}", uploadPath, e);
}
} }
// 保存文件信息
MediaDTO mediaDTO = new MediaDTO();
String name = file.getOriginalFilename();
long size = file.getSize();
mediaDTO.setMedia_name(name);
mediaDTO.setMedia_alt(name);
mediaDTO.setMedia_size(size);
mediaDTO.setMedia_url(ossUrl);
mediaDTO.setMedia_order(1);
mediaDTO.setMedia_path("/".concat(dir).concat("/").concat(fileName));
mediaDTO.setMedia_domain(getOssUrlPrefix().concat(ALIYUN_OSS_DIR_PREFIX));
mediaDTO.setMedia_time(new Date());
mediaDTO.setMedia_desc("");
mediaDTO.setMedia_duration(media_duration);
shopStoreMediaService.saveMedia(mediaDTO, user);
Map result = new HashMap<>();
result.put("media_duration", media_duration);
result.put("media_url", ossUrl);
result.put("thumb", thumb_file_url);
return result;
} }
public Map upload(MultipartFile file, UserDto user) { public Map upload(MultipartFile file, UserDto user) {