Pre Merge pull request !172 from 让无线电飞BG8GLR/master-jdk17
commit
e9568d4c62
|
@ -51,12 +51,22 @@ public class GrayLoadBalancer implements ReactorServiceInstanceLoadBalancer {
|
|||
public Mono<Response<ServiceInstance>> choose(Request request) {
|
||||
// 获得 HttpHeaders 属性,实现从 header 中获取 version
|
||||
HttpHeaders headers = ((RequestDataContext) request.getContext()).getClientRequest().getHeaders();
|
||||
//从requet中取得链接参数列表
|
||||
java.net.URI uri = ((RequestDataContext) request.getContext()).getClientRequest().getUrl();
|
||||
java.util.Map<String, String> queryParams = java.util.stream.Stream.of(uri.getQuery().split("&"))
|
||||
.filter(s -> !s.isEmpty())
|
||||
.map(s -> s.split("="))
|
||||
.collect(java.util.stream.Collectors.toMap(
|
||||
arr -> arr[0],
|
||||
arr -> arr.length > 1 ? arr[1] : "",
|
||||
(existing, replacement) -> existing
|
||||
));
|
||||
// 选择实例
|
||||
ServiceInstanceListSupplier supplier = serviceInstanceListSupplierProvider.getIfAvailable(NoopServiceInstanceListSupplier::new);
|
||||
return supplier.get(request).next().map(list -> getInstanceResponse(list, headers));
|
||||
return supplier.get(request).next().map(list -> getInstanceResponse(list, headers,queryParams));
|
||||
}
|
||||
|
||||
private Response<ServiceInstance> getInstanceResponse(List<ServiceInstance> instances, HttpHeaders headers) {
|
||||
private Response<ServiceInstance> getInstanceResponse(List<ServiceInstance> instances, HttpHeaders headers, java.util.Map<String, String> queryParams) {
|
||||
// 如果服务实例为空,则直接返回
|
||||
if (CollUtil.isEmpty(instances)) {
|
||||
log.warn("[getInstanceResponse][serviceId({}) 服务实例列表为空]", serviceId);
|
||||
|
@ -64,8 +74,12 @@ public class GrayLoadBalancer implements ReactorServiceInstanceLoadBalancer {
|
|||
}
|
||||
|
||||
// 筛选满足 version 条件的实例列表
|
||||
String version = headers.getFirst(VERSION);
|
||||
String version1 = headers.getFirst(VERSION);
|
||||
if(StrUtil.isEmpty(version1)) {
|
||||
version1 = queryParams.get("version");
|
||||
}
|
||||
List<ServiceInstance> chooseInstances;
|
||||
String version = version1;
|
||||
if (StrUtil.isEmpty(version)) {
|
||||
chooseInstances = instances;
|
||||
} else {
|
||||
|
|
|
@ -24,6 +24,7 @@ import org.springframework.validation.annotation.Validated;
|
|||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
|
||||
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
||||
import static cn.iocoder.yudao.module.infra.framework.file.core.utils.FileTypeUtils.writeAttachment;
|
||||
|
||||
|
@ -42,6 +43,14 @@ public class FileController {
|
|||
public CommonResult<String> uploadFile(FileUploadReqVO uploadReqVO) throws Exception {
|
||||
MultipartFile file = uploadReqVO.getFile();
|
||||
String path = uploadReqVO.getPath();
|
||||
// 校验文件类型
|
||||
String extname = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")).toLowerCase();
|
||||
if(StrUtil.isEmpty(extname)){
|
||||
return error(3379,"只能上传图片文件!");
|
||||
}
|
||||
if(!".bmp,.jpg,.jpeg,.png".contains(extname)) {
|
||||
return error(3379,"只能上传图片文件!");
|
||||
}
|
||||
return success(fileService.createFile(file.getOriginalFilename(), path, IoUtil.readBytes(file.getInputStream())));
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue