Spring Cloud Zuul 네트워크 관리자 업로드 파일 코드 문제
Spring Cloud Zuul은 현재 업로드 파일에 대해 두 가지 처리 방식을 가지고 있는데, 하나는 spring mvc이고, 다른 하나는 zuulServlet이다.spring mvc는 파일 처리가 잘 되지 않아 부호화 문제를 초래할 수 있으며,zuulServlet은 그렇지 않습니다.
그러면 어떻게 파일을 주울서브렛 방식으로 업로드합니까?현재 보편적인 해결 방안은 URL에/zuul의 접두사를 붙이는 것입니다. 이것은 확실히 정확합니다. 왜냐하면 추가된 필터는 zuulServlet을 사용하기 때문입니다.
필터에 대한 지식은 아래 링크가 상세하게 설명되어 있습니다http://blog.didispace.com/spr...
필터에는 pre 필터 서브렛DetectionFilter가 있습니다. 필터의 실행 순서는 -3이고 가장 먼저 실행되는 필터입니다. 이 필터에는 다음과 같은 코드가 있습니다.
@Override
public Object run() {
RequestContext ctx = RequestContext.getCurrentContext();
HttpServletRequest request = ctx.getRequest();
if (!(request instanceof HttpServletRequestWrapper)
&& isDispatcherServletRequest(request)) {
ctx.set(IS_DISPATCHER_SERVLET_REQUEST_KEY, true);
} else {
ctx.set(IS_DISPATCHER_SERVLET_REQUEST_KEY, false);
}
return null;
}
이 방법에서 ISDISPATCHER_SERVLET_REQUEST_KEY가 false이면 ZuulServlet으로 처리됩니다./zuul 접두어가 없으면 ISDISPATCHER_SERVLET_REQUEST_KEY는true로 설정되고spring mvc로 업로드됩니다.부호화 문제가 발생할 수 있습니다.
그러면 우리의 해결 방안은 다음 필터에 들어가기 전에 우리의 파일을 업로드하는 요청을 ZuulServlet으로 처리하는 것입니다. 따라서 이 방법을 다시 쓸 수 있습니다. 콘텐츠Type에 따라 요청이 multipart라면 IS 를 판단합니다.DISPATCHER_SERVLET_REQUEST_KEY가false로 설정되면 ZuulServlet으로 처리됩니다.
여기까지는 아직 끝나지 않았습니다. 아주 구덩이가 있습니다. 마지막 이전에pre필터에서 url을 처리합니다.만약 이 요청이 ZuulServlet에서 처리된다면, 그는 URL의 앞부분에 있는 ZuulServletPath를 대체할 것입니다. ZuulServletPath는 기본적으로 아까 우리가 대체한 접두사/zuul입니다.만약 당신이 처리하지 않는다면, 당신의 요청 경로가 바뀔 것입니다.그래서 여기서 우리는 이 기본 zuulServletPath를 빈 값으로 바꾸면 바꾸지 않을 것이다.구성 파일에 다음을 추가합니다.servletPath: 뒤에 있는 값은 채워지지 않습니다.여기까지, 문제는 끝난 셈이다. 마지막으로 우리가 다시 쓴 그 방법을 스프링에 주입한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.