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);
|
||||
}
|
||||
|
||||
@GetMapping(value = "/md/get/url")
|
||||
public ResponseEntity<byte[]> getFileByUrl(@RequestParam ("url") String url) {
|
||||
return resourceService.getMdImageByUrl(url);
|
||||
}
|
||||
|
||||
@GetMapping(value = "/ui/get")
|
||||
public ResponseEntity<FileSystemResource> getUiFile(@RequestParam ("fileName") String fileName) {
|
||||
return resourceService.getUiResultImage(fileName);
|
||||
|
|
|
@ -7,12 +7,15 @@ import io.metersphere.controller.request.MdUploadRequest;
|
|||
import io.metersphere.i18n.Translator;
|
||||
import org.springframework.core.io.FileSystemResource;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.File;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
|
@ -23,6 +26,9 @@ import java.util.Date;
|
|||
@Transactional(rollbackFor = Exception.class)
|
||||
public class ResourceService {
|
||||
|
||||
@Resource
|
||||
private RestTemplate restTemplate;
|
||||
|
||||
public void mdUpload(MdUploadRequest request, MultipartFile file) {
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.web.client.RestTemplate;
|
||||
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
@ -460,6 +462,7 @@ public class ZentaoPlatform extends AbstractIssuePlatform {
|
|||
name = name.replaceAll("&", "&");
|
||||
path = zentaoClient.getBaseUrl() + path.replaceAll("&", "&");
|
||||
}
|
||||
path = "/resource/md/get/url?url=" + URLEncoder.encode(path, StandardCharsets.UTF_8);
|
||||
// 图片与描述信息之间需换行,否则无法预览图片
|
||||
result = "\n\n![" + name + "](" + path + ")";
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue