fix: 禅道同步图片失败
--bug=1013432 --user=陈建星 [缺陷管理] github#13685通过metersphere平台创建缺陷,同步至禅道缺陷之后,meterphere点击【同步缺陷】,禅道缺陷同步失败 https://www.tapd.cn/55049933/s/1165437
This commit is contained in:
parent
5ddeb98efa
commit
ea54bfe739
|
@ -25,6 +25,11 @@ public class ResourceController {
|
||||||
return resourceService.getMdImage(fileName);
|
return resourceService.getMdImage(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@GetMapping(value = "/md/get/url")
|
||||||
|
public ResponseEntity<byte[]> getFileByUrl(@RequestParam ("url") String url) {
|
||||||
|
return resourceService.getMdImageByUrl(url);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping(value = "/ui/get")
|
@GetMapping(value = "/ui/get")
|
||||||
public ResponseEntity<FileSystemResource> getUiFile(@RequestParam ("fileName") String fileName) {
|
public ResponseEntity<FileSystemResource> getUiFile(@RequestParam ("fileName") String fileName) {
|
||||||
return resourceService.getUiResultImage(fileName);
|
return resourceService.getUiResultImage(fileName);
|
||||||
|
|
|
@ -7,12 +7,15 @@ import io.metersphere.controller.request.MdUploadRequest;
|
||||||
import io.metersphere.i18n.Translator;
|
import io.metersphere.i18n.Translator;
|
||||||
import org.springframework.core.io.FileSystemResource;
|
import org.springframework.core.io.FileSystemResource;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.web.client.RestTemplate;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.net.URLDecoder;
|
import java.net.URLDecoder;
|
||||||
|
@ -23,6 +26,9 @@ import java.util.Date;
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public class ResourceService {
|
public class ResourceService {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RestTemplate restTemplate;
|
||||||
|
|
||||||
public void mdUpload(MdUploadRequest request, MultipartFile file) {
|
public void mdUpload(MdUploadRequest request, MultipartFile file) {
|
||||||
FileUtils.uploadFile(file, FileUtils.MD_IMAGE_DIR, request.getId() + "_" + request.getFileName());
|
FileUtils.uploadFile(file, FileUtils.MD_IMAGE_DIR, request.getId() + "_" + request.getFileName());
|
||||||
}
|
}
|
||||||
|
@ -82,4 +88,18 @@ public class ResourceService {
|
||||||
}
|
}
|
||||||
FileUtils.deleteFile(FileUtils.MD_IMAGE_DIR + "/" + fileName);
|
FileUtils.deleteFile(FileUtils.MD_IMAGE_DIR + "/" + fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* http 代理
|
||||||
|
* 如果当前访问地址是 https,直接访问 http 的图片资源
|
||||||
|
* 由于浏览器的安全机制,http 会被转成 https
|
||||||
|
* @param url
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ResponseEntity<byte[]> getMdImageByUrl(String url) {
|
||||||
|
if (url.contains("md/get/url")) {
|
||||||
|
MSException.throwException(Translator.get("invalid_parameter"));
|
||||||
|
}
|
||||||
|
return restTemplate.exchange(url, HttpMethod.GET, null, byte[].class);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,8 @@ import org.springframework.util.LinkedMultiValueMap;
|
||||||
import org.springframework.util.MultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
||||||
import org.springframework.web.client.RestTemplate;
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
|
import java.net.URLEncoder;
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
@ -460,6 +462,7 @@ public class ZentaoPlatform extends AbstractIssuePlatform {
|
||||||
name = name.replaceAll("&", "&");
|
name = name.replaceAll("&", "&");
|
||||||
path = zentaoClient.getBaseUrl() + path.replaceAll("&", "&");
|
path = zentaoClient.getBaseUrl() + path.replaceAll("&", "&");
|
||||||
}
|
}
|
||||||
|
path = "/resource/md/get/url?url=" + URLEncoder.encode(path, StandardCharsets.UTF_8);
|
||||||
// 图片与描述信息之间需换行,否则无法预览图片
|
// 图片与描述信息之间需换行,否则无法预览图片
|
||||||
result = "\n\n![" + name + "](" + path + ")";
|
result = "\n\n![" + name + "](" + path + ")";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue