fix: 禅道提交缺陷图片无法显示
--bug=1010047 --user=陈建星 【测试跟踪】github#10174,从MS提交缺陷至禅道时,上传的图片未能在禅道上正确预览显示,请修复 https://www.tapd.cn/55049933/s/1100725
This commit is contained in:
parent
41675def73
commit
c30ec9a5c4
|
@ -2,6 +2,7 @@ package io.metersphere.service;
|
|||
|
||||
import io.metersphere.commons.exception.MSException;
|
||||
import io.metersphere.commons.utils.FileUtils;
|
||||
import io.metersphere.commons.utils.LogUtil;
|
||||
import io.metersphere.controller.request.MdUploadRequest;
|
||||
import io.metersphere.i18n.Translator;
|
||||
import org.springframework.core.io.FileSystemResource;
|
||||
|
@ -14,6 +15,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||
|
||||
import java.io.File;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
import java.net.URLEncoder;
|
||||
import java.util.Date;
|
||||
|
||||
|
@ -30,12 +32,7 @@ public class ResourceService {
|
|||
MSException.throwException(Translator.get("invalid_parameter"));
|
||||
File file = new File(FileUtils.MD_IMAGE_DIR + "/" + name);
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
String fileName = "";
|
||||
try {
|
||||
fileName = URLEncoder.encode(file.getName(), "UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
String fileName = encodeFileName(file.getName());
|
||||
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
|
||||
headers.add("Content-Disposition", "attachment; filename=" + fileName);
|
||||
headers.add("Pragma", "no-cache");
|
||||
|
@ -49,6 +46,24 @@ public class ResourceService {
|
|||
.body(new FileSystemResource(file));
|
||||
}
|
||||
|
||||
public String encodeFileName(String fileName) {
|
||||
try {
|
||||
return URLEncoder.encode(fileName, "UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
LogUtil.error(e);
|
||||
return fileName;
|
||||
}
|
||||
}
|
||||
|
||||
public String decodeFileName(String fileName) {
|
||||
try {
|
||||
return URLDecoder.decode(fileName, "UTF-8");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
LogUtil.error(e);
|
||||
return fileName;
|
||||
}
|
||||
}
|
||||
|
||||
public void mdDelete(String fileName) {
|
||||
FileUtils.deleteFile(FileUtils.MD_IMAGE_DIR + "/" + fileName);
|
||||
}
|
||||
|
|
|
@ -375,12 +375,14 @@ public class ZentaoPlatform extends AbstractIssuePlatform {
|
|||
}
|
||||
|
||||
private String ms2ZentaoDescription(String msDescription) {
|
||||
String imgUrlRegex = "!\\[.*?]\\(/resource/md/get/(.*?\\..*?)\\)";
|
||||
String imgUrlRegex = "!\\[.*?]\\(/resource/md/get(.*?\\..*?)\\)";
|
||||
String zentaoSteps = msDescription.replaceAll(imgUrlRegex, zentaoClient.requestUrl.getReplaceImgUrl());
|
||||
Matcher matcher = zentaoClient.requestUrl.getImgPattern().matcher(zentaoSteps);
|
||||
while (matcher.find()) {
|
||||
// get file name
|
||||
String fileName = matcher.group(1);
|
||||
String originSubUrl = matcher.group(1);
|
||||
String fileName = originSubUrl.substring(10);
|
||||
fileName = resourceService.decodeFileName(fileName);
|
||||
// get file
|
||||
ResponseEntity<FileSystemResource> mdImage = resourceService.getMdImage(fileName);
|
||||
// upload zentao
|
||||
|
@ -388,10 +390,9 @@ public class ZentaoPlatform extends AbstractIssuePlatform {
|
|||
// todo delete local file
|
||||
int index = fileName.lastIndexOf(".");
|
||||
if (index != -1) {
|
||||
fileName = fileName.substring(0, index);
|
||||
}
|
||||
// replace id
|
||||
zentaoSteps = zentaoSteps.replaceAll(Pattern.quote(fileName), id);
|
||||
zentaoSteps = zentaoSteps.replaceAll(Pattern.quote(originSubUrl), id);
|
||||
}
|
||||
}
|
||||
// image link
|
||||
String netImgRegex = "!\\[(.*?)]\\((http.*?)\\)";
|
||||
|
|
Loading…
Reference in New Issue