Переглянути джерело

fix upload part

tags/B.2.2.0.6_20231012_base
yk 2 роки тому
джерело
коміт
3ac4c21dce
2 змінених файлів з 22 додано та 7 видалено
  1. +15
    -0
      xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/file/FileUtil.java
  2. +7
    -7
      xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/DmResourcesController.java

+ 15
- 0
xueyi-common/xueyi-common-core/src/main/java/com/xueyi/common/core/utils/file/FileUtil.java Переглянути файл

@@ -254,5 +254,20 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
}
}

public static String getFileNameNoExt(String fileName) {
if (fileName == null) {
return null;
}
int point = fileName.lastIndexOf('.');
return fileName.substring(0, point);
}

public static String getFileExt(String fileName) {
if (fileName == null) {
return null;
}
int point = fileName.lastIndexOf('.');
return fileName.substring(point + 1);
}

}

+ 7
- 7
xueyi-modules/xueyi-system/src/main/java/com/xueyi/system/resource/controller/DmResourcesController.java Переглянути файл

@@ -165,11 +165,12 @@ public class DmResourcesController extends BaseController<DmResourcesQuery, DmRe
dir.mkdirs();
}

String fileName = FileUtil.getFileNameNoExt(file.getOriginalFilename());
JSONObject jsonObject = new JSONObject();
logger.info("chunkIndex:{},chunkTotal:{},fileName:{},fileOriginName:{}",chunk,chunks,file.getName(),file.getOriginalFilename());
logger.info("chunkIndex:{},chunkTotal:{},fileName:{},fileOriginName:{}",chunk,chunks,file.getName(),fileName);

logger.info("upload 第{}/{} 块",chunk,chunks);
String path = folder + file.getName() + "_" + chunk + ".part";
String path = folder + fileName + "_" + chunk + ".part";
try {
file.transferTo(new File(path));
RedisUtil.increment("saas:upload:chunk:"+uuid,1);
@@ -178,19 +179,18 @@ public class DmResourcesController extends BaseController<DmResourcesQuery, DmRe
return AjaxResult.error("文件保存失败");
}
if (((Integer) RedisUtil.getVal("saas:upload:chunk:"+uuid)).longValue() == chunks) {
String name = file.getOriginalFilename();
// 合并所有分片
File[] content = new File[chunks];
for (int i = 0; i < chunks; i++) {
content[i] = new File(folder + name + "_" + i + ".part");
content[i] = new File(folder + fileName + "_" + i + ".part");
}
File destFile = new File(folder + name);
File destFile = new File(folder + fileName);
FileUtil.mergeFile(content, destFile);
// 删除分片文件
for (int i = 0; i < chunks; i++) {
new File(folder + name + "_" + i + ".part").delete();
new File(folder + fileName + "_" + i + ".part").delete();
}
MultipartFile multipartFile = new MockMultipartFile(name, new FileInputStream(destFile));
MultipartFile multipartFile = new MockMultipartFile(fileName, new FileInputStream(destFile));

RedisUtil.expire("saas:upload:chunk:"+uuid, 5);
return executeUpload(multipartFile, FileTypeUtil.getExtension(file), uuid);


Завантаження…
Відмінити
Зберегти