这是我第一次参加,所以请耐心等待我的第一个问题。
我认为我有某种配置问题,但经过一天的实验后我才陷入困境。我们的应用程序基于Spring-Cloud [Brixton发布]。我们有这样的配置:Portal(Web应用程序提供基于角度的web-ui),它具有配置到我们的网关服务的单路由的zuul代理,如下所示:
zuul:
ignoredServices: '*'
prefix: /api
routes:
api-proxy:
path: /**
serviceId: api-gateway
配置了另一个Zuul并将请求转发给内部业务逻辑服务:
zuul:
ignoredServices: '*'
routes:
service1:
path: /service1/**
serviceId: service1
service2:
path: /service2/**
serviceId: service2
所有这些配置都没有问题。
我现在面临的问题是文件上传多部分请求。更准确地说 - 那些多部分请求,当要上传的文件具有来自UTF-8
的非拉丁符号(例如,ñčęėįš)时。当请求到达必须处理@RequestPart MultipartFile file
的服务时,file.getOriginalFilename()
会在上述符号的位置返回问号。现在,我已经尝试将这样的文件直接上传到这样的控制器,并且文件名没有问号,也就是说,没有破坏,这表明,当代理中继接收请求时,在Zuul过滤器中的某处发生了对多部分请求的一些错误解释/解析。
也许有人和Zuul有过类似的经历,可以指导我解决这个问题吗?
答案 0 :(得分:2)
我自己也遇到了同样的问题,并创建了以下问题:
https://jira.spring.io/browse/SPR-15396
希望这可以在Spring 4.3.8中进行配置。
与此同时,您必须创建一个#define N 3.0 // number of columns
#define M 3. // number of rows
#import "GPUImageWarholFilter.h"
NSString *const kGPUImageWarholFragmentShaderString = SHADER_STRING
(
precision highp float;
varying highp vec2 textureCoordinate;
uniform sampler2D inputImageTexture;
void main()
{
vec4 color = texture2D(inputImageTexture, vec2(fract(textureCoordinate.x * N)/(M/ N), fract(textureCoordinate.y * M) / (M/N)));
gl_FragColor = color;
}
);
类型的bean(它会覆盖FormBodyWrapperFilter
中的那个)。在构造函数中,您传递ZuulConfiguration
的副本,该副本从FormHttpMessageConverter
扩展,并将FormHttpMessageConverter
中使用的编码更改为UTF-8(您可能还希望删除对{1}}的任何引用javax-mail,除非你在classpath上有这个)。您需要最新版本的Spring Cloud Netflix才能执行此操作。
示例:
FormHttpMessageConverter.MultipartHttpOutputMessage#getAsciiBytes(String)
然后创建@Bean
FormBodyWrapperFilter formBodyWrapperFilter() {
return new FormBodyWrapperFilter(new MyFormHttpMessageConverter());
}
的副本,并更改以下方法:
FormHttpMessageConverter
答案 1 :(得分:2)
即使使用较新版本,修改响应后仍有问题
使用 spring boot 2.3.8.RELEASE
通过强制以下弹簧属性设法修复它
server.servlet.encoding.force= true
server.servlet.encoding.charset= UTF-8