|
|
@@ -1,185 +1,185 @@
|
|
|
-package com.fdkankan.scene.service.impl;
|
|
|
-
|
|
|
-import cn.hutool.core.io.FileTypeUtil;
|
|
|
-import cn.hutool.core.io.FileUtil;
|
|
|
-import cn.hutool.core.io.IoUtil;
|
|
|
-import cn.hutool.core.lang.UUID;
|
|
|
-import com.fdkankan.model.constants.ConstantFileName;
|
|
|
-import com.fdkankan.model.constants.ConstantFilePath;
|
|
|
-import com.fdkankan.common.constant.ErrorCode;
|
|
|
-import com.fdkankan.common.exception.BusinessException;
|
|
|
-import com.fdkankan.model.utils.CreateObjUtil;
|
|
|
-import com.fdkankan.scene.service.IFileConvertService;
|
|
|
-import java.io.BufferedInputStream;
|
|
|
-import java.io.File;
|
|
|
-import javax.servlet.ServletOutputStream;
|
|
|
-import javax.servlet.http.HttpServletResponse;
|
|
|
-import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.stereotype.Service;
|
|
|
-import org.springframework.web.multipart.MultipartFile;
|
|
|
-
|
|
|
-/**
|
|
|
- * <p>
|
|
|
- * -
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @author dengsixing
|
|
|
- * @since 2022/5/17
|
|
|
- **/
|
|
|
-@Slf4j
|
|
|
-@Service
|
|
|
-public class FileConvertServiceImpl implements IFileConvertService {
|
|
|
-
|
|
|
- @Override
|
|
|
- public void convertTxtToModeldata(MultipartFile file, HttpServletResponse response) throws Exception {
|
|
|
-
|
|
|
- //生成uuid
|
|
|
- String fileName = "vision.modeldata";
|
|
|
- String uuid = UUID.randomUUID().toString();
|
|
|
- String path = ConstantFilePath.FILE_CONVERT_PATH + uuid;
|
|
|
-// String path = "F:\\mnt\\4Dkankan\\fileConvert\\" + uuid;
|
|
|
- String srcPath = path + File.separator + file.getOriginalFilename();
|
|
|
- String targetPath = path + File.separator + fileName;
|
|
|
- File srcFile = new File(srcPath);
|
|
|
- if(!srcFile.getParentFile().exists()){
|
|
|
- srcFile.getParentFile().mkdirs();
|
|
|
- }
|
|
|
- file.transferTo(new File(srcPath));
|
|
|
- String type = FileTypeUtil.getType(srcFile);
|
|
|
- if(!"txt".equals(type)){
|
|
|
- throw new BusinessException(ErrorCode.FAILURE_CODE_7007, "txt");
|
|
|
- }
|
|
|
- CreateObjUtil.convertTxtToVisionmodeldata(srcPath, targetPath);
|
|
|
- if(!FileUtil.exist(targetPath)){
|
|
|
- throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
- }
|
|
|
-
|
|
|
- // 设置返回内容格式
|
|
|
- response.setContentType("application/octet-stream");
|
|
|
-
|
|
|
- // 把文件名按UTF-8取出并按ISO8859-1编码,保证弹出窗口中的文件名中文不乱码
|
|
|
- // 中文不要太多,最多支持17个中文,因为header有150个字节限制。
|
|
|
- // 这一步一定要在读取文件之后进行,否则文件名会乱码,找不到文件
|
|
|
-// fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");
|
|
|
-
|
|
|
- // 设置下载弹窗的文件名和格式(文件名要包括名字和文件格式)
|
|
|
- response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
|
|
-
|
|
|
- try(
|
|
|
- BufferedInputStream inputStream = FileUtil.getInputStream(targetPath);
|
|
|
- ServletOutputStream outputStream = response.getOutputStream();
|
|
|
- ){
|
|
|
- IoUtil.copy(inputStream, outputStream);
|
|
|
- //关闭流
|
|
|
- IoUtil.close(outputStream);
|
|
|
- IoUtil.close(inputStream);
|
|
|
- }catch (Exception e){
|
|
|
- log.error("文件流输出失败,文件路径: " + targetPath, e);
|
|
|
- throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void convertTxtToDam(MultipartFile file, HttpServletResponse response) throws Exception {
|
|
|
- //生成uuid
|
|
|
- String fileName = ConstantFileName.modelUUID+"_50k.dam";
|
|
|
- String uuid = UUID.randomUUID().toString();
|
|
|
- String path = ConstantFilePath.FILE_CONVERT_PATH + uuid;
|
|
|
-// String path = "F:\\mnt\\4Dkankan\\fileConvert\\" + uuid;
|
|
|
- String srcPath = path + File.separator + file.getOriginalFilename();
|
|
|
- String targetPath = path + File.separator + fileName;
|
|
|
- File srcFile = new File(srcPath);
|
|
|
- if(!srcFile.getParentFile().exists()){
|
|
|
- srcFile.getParentFile().mkdirs();
|
|
|
- }
|
|
|
- file.transferTo(new File(srcPath));
|
|
|
- String type = FileTypeUtil.getType(srcFile);
|
|
|
- if(!"txt".equals(type)){
|
|
|
- throw new BusinessException(ErrorCode.FAILURE_CODE_7007, "txt");
|
|
|
- }
|
|
|
- CreateObjUtil.convertTxtToDam( srcPath, targetPath);
|
|
|
- if(!FileUtil.exist(targetPath)){
|
|
|
- throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
- }
|
|
|
-
|
|
|
- // 设置返回内容格式
|
|
|
- response.setContentType("application/octet-stream");
|
|
|
-
|
|
|
- // 把文件名按UTF-8取出并按ISO8859-1编码,保证弹出窗口中的文件名中文不乱码
|
|
|
- // 中文不要太多,最多支持17个中文,因为header有150个字节限制。
|
|
|
- // 这一步一定要在读取文件之后进行,否则文件名会乱码,找不到文件
|
|
|
-// fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");
|
|
|
-
|
|
|
- // 设置下载弹窗的文件名和格式(文件名要包括名字和文件格式)
|
|
|
- response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
|
|
-
|
|
|
- try(
|
|
|
- BufferedInputStream inputStream = FileUtil.getInputStream(targetPath);
|
|
|
- ServletOutputStream outputStream = response.getOutputStream();
|
|
|
- ){
|
|
|
- IoUtil.copy(inputStream, outputStream);
|
|
|
- //关闭流
|
|
|
- IoUtil.close(outputStream);
|
|
|
- IoUtil.close(inputStream);
|
|
|
- }catch (Exception e){
|
|
|
- log.error("文件流输出失败,文件路径: " + targetPath, e);
|
|
|
- throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void convertTxtToLzma(MultipartFile file, HttpServletResponse response) throws Exception {
|
|
|
-
|
|
|
- //生成uuid
|
|
|
- String damFileName = ConstantFileName.modelUUID+"_50k.dam";
|
|
|
- String lzmaFileName = damFileName + ".lzma";
|
|
|
- String uuid = UUID.randomUUID().toString();
|
|
|
- String path = ConstantFilePath.FILE_CONVERT_PATH + uuid;
|
|
|
-// String path = "F:\\mnt\\4Dkankan\\fileConvert\\" + uuid;
|
|
|
- String srcPath = path + File.separator + file.getOriginalFilename();
|
|
|
- String damFilePath = path + File.separator + damFileName;
|
|
|
- String lzmaFilePath = path + File.separator + lzmaFileName;
|
|
|
- File srcFile = new File(srcPath);
|
|
|
- if(!srcFile.getParentFile().exists()){
|
|
|
- srcFile.getParentFile().mkdirs();
|
|
|
- }
|
|
|
- file.transferTo(new File(srcPath));
|
|
|
- String type = FileTypeUtil.getType(srcFile);
|
|
|
- if(!"txt".equals(type)){
|
|
|
- throw new BusinessException(ErrorCode.FAILURE_CODE_7007, "txt");
|
|
|
- }
|
|
|
- CreateObjUtil.convertTxtToDam( srcPath, damFilePath);
|
|
|
- if(!FileUtil.exist(damFilePath)){
|
|
|
- throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
- }
|
|
|
- CreateObjUtil.convertDamToLzmaByAbsolutePath(damFilePath);
|
|
|
- if(!FileUtil.exist(lzmaFilePath)){
|
|
|
- throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
- }
|
|
|
-
|
|
|
- // 设置返回内容格式
|
|
|
- response.setContentType("application/octet-stream");
|
|
|
-
|
|
|
- // 把文件名按UTF-8取出并按ISO8859-1编码,保证弹出窗口中的文件名中文不乱码
|
|
|
- // 中文不要太多,最多支持17个中文,因为header有150个字节限制。
|
|
|
- // 这一步一定要在读取文件之后进行,否则文件名会乱码,找不到文件
|
|
|
-// fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");
|
|
|
-
|
|
|
- // 设置下载弹窗的文件名和格式(文件名要包括名字和文件格式)
|
|
|
- response.setHeader("Content-Disposition", "attachment;filename=" + lzmaFileName);
|
|
|
-
|
|
|
- try(
|
|
|
- BufferedInputStream inputStream = FileUtil.getInputStream(lzmaFilePath);
|
|
|
- ServletOutputStream outputStream = response.getOutputStream();
|
|
|
- ){
|
|
|
- IoUtil.copy(inputStream, outputStream);
|
|
|
- //关闭流
|
|
|
- IoUtil.close(outputStream);
|
|
|
- IoUtil.close(inputStream);
|
|
|
- }catch (Exception e){
|
|
|
- log.error("文件流输出失败,文件路径: " + lzmaFilePath, e);
|
|
|
- throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-}
|
|
|
+//package com.fdkankan.scene.service.impl;
|
|
|
+//
|
|
|
+//import cn.hutool.core.io.FileTypeUtil;
|
|
|
+//import cn.hutool.core.io.FileUtil;
|
|
|
+//import cn.hutool.core.io.IoUtil;
|
|
|
+//import cn.hutool.core.lang.UUID;
|
|
|
+//import com.fdkankan.model.constants.ConstantFileName;
|
|
|
+//import com.fdkankan.common.constant.ErrorCode;
|
|
|
+//import com.fdkankan.common.exception.BusinessException;
|
|
|
+//import com.fdkankan.model.utils.CreateObjUtil;
|
|
|
+//import com.fdkankan.scene.constant.ConstantFileLocPath;
|
|
|
+//import com.fdkankan.scene.service.IFileConvertService;
|
|
|
+//import java.io.BufferedInputStream;
|
|
|
+//import java.io.File;
|
|
|
+//import javax.servlet.ServletOutputStream;
|
|
|
+//import javax.servlet.http.HttpServletResponse;
|
|
|
+//import lombok.extern.slf4j.Slf4j;
|
|
|
+//import org.springframework.stereotype.Service;
|
|
|
+//import org.springframework.web.multipart.MultipartFile;
|
|
|
+//
|
|
|
+///**
|
|
|
+// * <p>
|
|
|
+// * -
|
|
|
+// * </p>
|
|
|
+// *
|
|
|
+// * @author dengsixing
|
|
|
+// * @since 2022/5/17
|
|
|
+// **/
|
|
|
+//@Slf4j
|
|
|
+//@Service
|
|
|
+//public class FileConvertServiceImpl implements IFileConvertService {
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void convertTxtToModeldata(MultipartFile file, HttpServletResponse response) throws Exception {
|
|
|
+//
|
|
|
+// //生成uuid
|
|
|
+// String fileName = "vision.modeldata";
|
|
|
+// String uuid = UUID.randomUUID().toString();
|
|
|
+// String path = ConstantFileLocPath.FILE_CONVERT_PATH + uuid;
|
|
|
+//// String path = "F:\\mnt\\4Dkankan\\fileConvert\\" + uuid;
|
|
|
+// String srcPath = path + File.separator + file.getOriginalFilename();
|
|
|
+// String targetPath = path + File.separator + fileName;
|
|
|
+// File srcFile = new File(srcPath);
|
|
|
+// if(!srcFile.getParentFile().exists()){
|
|
|
+// srcFile.getParentFile().mkdirs();
|
|
|
+// }
|
|
|
+// file.transferTo(new File(srcPath));
|
|
|
+// String type = FileTypeUtil.getType(srcFile);
|
|
|
+// if(!"txt".equals(type)){
|
|
|
+// throw new BusinessException(ErrorCode.FAILURE_CODE_7007, "txt");
|
|
|
+// }
|
|
|
+// CreateObjUtil.convertTxtToVisionmodeldata(srcPath, targetPath);
|
|
|
+// if(!FileUtil.exist(targetPath)){
|
|
|
+// throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
+// }
|
|
|
+//
|
|
|
+// // 设置返回内容格式
|
|
|
+// response.setContentType("application/octet-stream");
|
|
|
+//
|
|
|
+// // 把文件名按UTF-8取出并按ISO8859-1编码,保证弹出窗口中的文件名中文不乱码
|
|
|
+// // 中文不要太多,最多支持17个中文,因为header有150个字节限制。
|
|
|
+// // 这一步一定要在读取文件之后进行,否则文件名会乱码,找不到文件
|
|
|
+//// fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");
|
|
|
+//
|
|
|
+// // 设置下载弹窗的文件名和格式(文件名要包括名字和文件格式)
|
|
|
+// response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
|
|
+//
|
|
|
+// try(
|
|
|
+// BufferedInputStream inputStream = FileUtil.getInputStream(targetPath);
|
|
|
+// ServletOutputStream outputStream = response.getOutputStream();
|
|
|
+// ){
|
|
|
+// IoUtil.copy(inputStream, outputStream);
|
|
|
+// //关闭流
|
|
|
+// IoUtil.close(outputStream);
|
|
|
+// IoUtil.close(inputStream);
|
|
|
+// }catch (Exception e){
|
|
|
+// log.error("文件流输出失败,文件路径: " + targetPath, e);
|
|
|
+// throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void convertTxtToDam(MultipartFile file, HttpServletResponse response) throws Exception {
|
|
|
+// //生成uuid
|
|
|
+// String fileName = ConstantFileName.modelUUID+"_50k.dam";
|
|
|
+// String uuid = UUID.randomUUID().toString();
|
|
|
+// String path = ConstantFileLocPath.FILE_CONVERT_PATH + uuid;
|
|
|
+//// String path = "F:\\mnt\\4Dkankan\\fileConvert\\" + uuid;
|
|
|
+// String srcPath = path + File.separator + file.getOriginalFilename();
|
|
|
+// String targetPath = path + File.separator + fileName;
|
|
|
+// File srcFile = new File(srcPath);
|
|
|
+// if(!srcFile.getParentFile().exists()){
|
|
|
+// srcFile.getParentFile().mkdirs();
|
|
|
+// }
|
|
|
+// file.transferTo(new File(srcPath));
|
|
|
+// String type = FileTypeUtil.getType(srcFile);
|
|
|
+// if(!"txt".equals(type)){
|
|
|
+// throw new BusinessException(ErrorCode.FAILURE_CODE_7007, "txt");
|
|
|
+// }
|
|
|
+// CreateObjUtil.convertTxtToDam( srcPath, targetPath);
|
|
|
+// if(!FileUtil.exist(targetPath)){
|
|
|
+// throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
+// }
|
|
|
+//
|
|
|
+// // 设置返回内容格式
|
|
|
+// response.setContentType("application/octet-stream");
|
|
|
+//
|
|
|
+// // 把文件名按UTF-8取出并按ISO8859-1编码,保证弹出窗口中的文件名中文不乱码
|
|
|
+// // 中文不要太多,最多支持17个中文,因为header有150个字节限制。
|
|
|
+// // 这一步一定要在读取文件之后进行,否则文件名会乱码,找不到文件
|
|
|
+//// fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");
|
|
|
+//
|
|
|
+// // 设置下载弹窗的文件名和格式(文件名要包括名字和文件格式)
|
|
|
+// response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
|
|
+//
|
|
|
+// try(
|
|
|
+// BufferedInputStream inputStream = FileUtil.getInputStream(targetPath);
|
|
|
+// ServletOutputStream outputStream = response.getOutputStream();
|
|
|
+// ){
|
|
|
+// IoUtil.copy(inputStream, outputStream);
|
|
|
+// //关闭流
|
|
|
+// IoUtil.close(outputStream);
|
|
|
+// IoUtil.close(inputStream);
|
|
|
+// }catch (Exception e){
|
|
|
+// log.error("文件流输出失败,文件路径: " + targetPath, e);
|
|
|
+// throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// @Override
|
|
|
+// public void convertTxtToLzma(MultipartFile file, HttpServletResponse response) throws Exception {
|
|
|
+//
|
|
|
+// //生成uuid
|
|
|
+// String damFileName = ConstantFileName.modelUUID+"_50k.dam";
|
|
|
+// String lzmaFileName = damFileName + ".lzma";
|
|
|
+// String uuid = UUID.randomUUID().toString();
|
|
|
+// String path = ConstantFileLocPath.FILE_CONVERT_PATH + uuid;
|
|
|
+//// String path = "F:\\mnt\\4Dkankan\\fileConvert\\" + uuid;
|
|
|
+// String srcPath = path + File.separator + file.getOriginalFilename();
|
|
|
+// String damFilePath = path + File.separator + damFileName;
|
|
|
+// String lzmaFilePath = path + File.separator + lzmaFileName;
|
|
|
+// File srcFile = new File(srcPath);
|
|
|
+// if(!srcFile.getParentFile().exists()){
|
|
|
+// srcFile.getParentFile().mkdirs();
|
|
|
+// }
|
|
|
+// file.transferTo(new File(srcPath));
|
|
|
+// String type = FileTypeUtil.getType(srcFile);
|
|
|
+// if(!"txt".equals(type)){
|
|
|
+// throw new BusinessException(ErrorCode.FAILURE_CODE_7007, "txt");
|
|
|
+// }
|
|
|
+// CreateObjUtil.convertTxtToDam( srcPath, damFilePath);
|
|
|
+// if(!FileUtil.exist(damFilePath)){
|
|
|
+// throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
+// }
|
|
|
+// CreateObjUtil.convertDamToLzmaByAbsolutePath(damFilePath);
|
|
|
+// if(!FileUtil.exist(lzmaFilePath)){
|
|
|
+// throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
+// }
|
|
|
+//
|
|
|
+// // 设置返回内容格式
|
|
|
+// response.setContentType("application/octet-stream");
|
|
|
+//
|
|
|
+// // 把文件名按UTF-8取出并按ISO8859-1编码,保证弹出窗口中的文件名中文不乱码
|
|
|
+// // 中文不要太多,最多支持17个中文,因为header有150个字节限制。
|
|
|
+// // 这一步一定要在读取文件之后进行,否则文件名会乱码,找不到文件
|
|
|
+//// fileName = new String(fileName.getBytes("UTF-8"),"ISO8859-1");
|
|
|
+//
|
|
|
+// // 设置下载弹窗的文件名和格式(文件名要包括名字和文件格式)
|
|
|
+// response.setHeader("Content-Disposition", "attachment;filename=" + lzmaFileName);
|
|
|
+//
|
|
|
+// try(
|
|
|
+// BufferedInputStream inputStream = FileUtil.getInputStream(lzmaFilePath);
|
|
|
+// ServletOutputStream outputStream = response.getOutputStream();
|
|
|
+// ){
|
|
|
+// IoUtil.copy(inputStream, outputStream);
|
|
|
+// //关闭流
|
|
|
+// IoUtil.close(outputStream);
|
|
|
+// IoUtil.close(inputStream);
|
|
|
+// }catch (Exception e){
|
|
|
+// log.error("文件流输出失败,文件路径: " + lzmaFilePath, e);
|
|
|
+// throw new BusinessException(ErrorCode.FAILURE_CODE_8005);
|
|
|
+// }
|
|
|
+//
|
|
|
+// }
|
|
|
+//}
|