public ErrorCode uploadCompressedFile(MultipartFile file, String groupId, UserDetailDTO userInfo)
throws IOException {
String path = mocWidgetsGroupMapper.selectGroupPath(groupId);
if (StringUtils.isBlank(path)) {
return ErrorCode.visionGroupNameNotExit;
}
// List<String> existWidgetlist = new ArrayList<String>();
Map<String, MocWidgetsVO> widgetMap = new HashMap<String, MocWidgetsVO>();
List<MocWidgetsVO> widgetList = new ArrayList<MocWidgetsVO>();
// 获取ZIP输入流(一定要指定字符集Charset.forName("GBK")否则会报java.lang.IllegalArgumentException:
// MALFORMED)
ZipInputStream zipInputStream = new ZipInputStream(file.getInputStream(), Charset.forName("GBK"));
// 定义ZipEntry置为null,避免由于重复调用zipInputStream.getNextEntry造成的不必要的问题
BufferedReader br = null;
ZipEntry zipEntry = null;
// 循环遍历
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
if (!zipEntry.isDirectory()) {
String fullName = zipEntry.getName();// asset/test/test.json asset/test/test.png asset/test
String[] tempMenu = fullName.split("/");
String fileName = tempMenu[tempMenu.length - 1];// test.json test.png
String realName = fileName.split("\\.")[0];// test
if (!widgetMap.containsKey(realName)) {
MocWidgetsVO mocWidgetsVO = new MocWidgetsVO();
mocWidgetsVO.setWidgetName(realName);
mocWidgetsVO.setWidgetGroupId(groupId);
mocWidgetsVO.setCreateDate(new Date());
mocWidgetsVO.setCreateUserId(userInfo.getUserId());
mocWidgetsVO.setCreateUserName(userInfo.getName());
mocWidgetsVO.setModifyDate(new Date());
mocWidgetsVO.setModifyUserId(userInfo.getUserId());
mocWidgetsVO.setModifyUserName(userInfo.getName());
widgetMap.put(realName, mocWidgetsVO);
}
MocWidgetsVO mocWidgetsVO = widgetMap.get(realName);
if (CommUtil.isImage(fullName)) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
while (zipInputStream.available() != 0) {
out.write(zipInputStream.read());
}
InputStream inputStream = new ByteArrayInputStream(out.toByteArray());
String storageId = storageService.uploadFile(inputStream, fileName);
inputStream.close();
out.close();
mocWidgetsVO.setObjectStorageId(storageId);
} else {
// 读取
br = new BufferedReader(new InputStreamReader(zipInputStream));
StringBuffer json = new StringBuffer();
String line = null;
// 内容不为空,输出
while ((line = br.readLine()) != null) {
json.append(line);
}
mocWidgetsVO.setUrl(path + fileName);
mocWidgetsVO.setJson(json.toString());
}
if (StringUtils.isNotBlank(mocWidgetsVO.getUrl())
&& StringUtils.isNotBlank(mocWidgetsVO.getObjectStorageId())) {
widgetList.add(mocWidgetsVO);
}
}
}
zipInputStream.closeEntry();
List<String> widgetIdList = (List<String>) getGenIdList(widgetList.size()).getT();
for (int i = 0; i < widgetList.size(); i++) {
widgetList.get(i).setWidgetId(widgetIdList.get(i));
}
int flag = mocWidgetsMapper.batchInsert(widgetList);
if (flag > 0) {
return ErrorCode.Success;
} else {
return ErrorCode.Failure;
}
}
压缩文件读取
最新推荐文章于 2022-07-07 18:49:29 发布