|
@@ -6,10 +6,7 @@ import cn.hutool.core.io.FileUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson2.JSON;
|
|
import com.alibaba.fastjson2.JSON;
|
|
|
import com.lowagie.text.*;
|
|
import com.lowagie.text.*;
|
|
|
-import com.lowagie.text.pdf.BaseFont;
|
|
|
|
|
-import com.lowagie.text.pdf.PdfPCell;
|
|
|
|
|
-import com.lowagie.text.pdf.PdfPTable;
|
|
|
|
|
-import com.lowagie.text.pdf.PdfWriter;
|
|
|
|
|
|
|
+import com.lowagie.text.pdf.*;
|
|
|
import com.xunmei.common.core.constant.CacheConstants;
|
|
import com.xunmei.common.core.constant.CacheConstants;
|
|
|
import com.xunmei.common.core.domain.IdName;
|
|
import com.xunmei.common.core.domain.IdName;
|
|
|
import com.xunmei.common.core.domain.registerbook.dto.CoreRegisterBookPdfExportDto;
|
|
import com.xunmei.common.core.domain.registerbook.dto.CoreRegisterBookPdfExportDto;
|
|
@@ -58,6 +55,8 @@ import java.time.Duration;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
import java.util.concurrent.CountDownLatch;
|
|
import java.util.concurrent.CountDownLatch;
|
|
|
|
|
+import java.util.regex.Matcher;
|
|
|
|
|
+import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -87,6 +86,8 @@ public class LocalSysFileServiceImpl implements ISysFileService {
|
|
|
|
|
|
|
|
|
|
|
|
|
private static PdfFilePathVo getLocalFilePath(String localFilePath, String businessType, String fileName) {
|
|
private static PdfFilePathVo getLocalFilePath(String localFilePath, String businessType, String fileName) {
|
|
|
|
|
+ fileName = filterPath(fileName);
|
|
|
|
|
+ businessType = filterPath(businessType);
|
|
|
final String path = File.separator + businessType + File.separator + DateUtil.format(new Date(), "yyyy" + File.separator + "MM" + File.separator + "dd" + File.separator);
|
|
final String path = File.separator + businessType + File.separator + DateUtil.format(new Date(), "yyyy" + File.separator + "MM" + File.separator + "dd" + File.separator);
|
|
|
final File file = new File(localFilePath + path);
|
|
final File file = new File(localFilePath + path);
|
|
|
if (!file.exists()) {
|
|
if (!file.exists()) {
|
|
@@ -99,6 +100,25 @@ public class LocalSysFileServiceImpl implements ISysFileService {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
|
+ * 修复路径操纵bug
|
|
|
|
|
+ * @param param
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ private static String filterPath(String param){
|
|
|
|
|
+ Pattern pattern = Pattern.compile("[/\\:*?<>|]");
|
|
|
|
|
+ Matcher matcher = pattern.matcher(param);
|
|
|
|
|
+ param =matcher.replaceAll("");
|
|
|
|
|
+ return param;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private static String filterHeader(String param){
|
|
|
|
|
+ Pattern pattern = Pattern.compile("[/\\:*?<>|=\\r\\n]");
|
|
|
|
|
+ Matcher matcher = pattern.matcher(param);
|
|
|
|
|
+ param =matcher.replaceAll("");
|
|
|
|
|
+ return param;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
* 本地文件上传接口
|
|
* 本地文件上传接口
|
|
|
*
|
|
*
|
|
|
* @param file 上传的文件
|
|
* @param file 上传的文件
|
|
@@ -171,6 +191,7 @@ public class LocalSysFileServiceImpl implements ISysFileService {
|
|
|
FileInputStream inputStream = new FileInputStream(file);
|
|
FileInputStream inputStream = new FileInputStream(file);
|
|
|
int i = path.lastIndexOf(File.separator);
|
|
int i = path.lastIndexOf(File.separator);
|
|
|
String fileName = path.substring(i + 1);
|
|
String fileName = path.substring(i + 1);
|
|
|
|
|
+ fileName = filterHeader(fileName);
|
|
|
// 设置响应头
|
|
// 设置响应头
|
|
|
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName);
|
|
response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName);
|
|
|
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
|
|
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
|