摘要:現(xiàn)在對于上傳文件有兩種處理方式,一種是用,另一種是。對文件處理不是很好,會導(dǎo)致亂碼問題,則不會。如果沒加前綴,就會置為,就會用上傳。會出現(xiàn)亂碼問題。在配置文件里面加上后面的值不填。到這里,問題算是結(jié)束了,最后把我們重寫的那個方法注入到。
Spring Cloud Zuul現(xiàn)在對于上傳文件有兩種處理方式,一種是用spring mvc,另一種是zuulServlet。spring mvc對文件處理不是很好,會導(dǎo)致亂碼問題,zuulServlet則不會。
那么怎么樣讓文件使用zuulServlet方式上傳呢?現(xiàn)在普遍的解決方案是給url加上 /zuul的前綴,這確實是正確的,因為加了之后過濾器會使用zuulServlet。
關(guān)于過濾器的知識,下面這個鏈接解釋的挺詳細(xì)了
http://blog.didispace.com/spr...
在過濾器中,有一個pre的過濾器 ServletDetectionFilter,他的執(zhí)行順序是-3,也是最先執(zhí)行的過濾器,在這個過濾器中,有這么一段代碼:
@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; }
在這個方法中,IS_DISPATCHER_SERVLET_REQUEST_KEY為false就會用ZuulServlet處理。如果沒加/zuul前綴,IS_DISPATCHER_SERVLET_REQUEST_KEY就會置為true,就會用spring mvc上傳。會出現(xiàn)亂碼問題。
那么我們的一個解決方案是在在進(jìn)入下一個過濾器之前我們就把我們的文件上傳的請求用ZuulServlet處理,所以我們可以重寫這個方法,根據(jù)contentType判斷請求如果是multipart就將IS_DISPATCHER_SERVLET_REQUEST_KEY置為false,那么它就會用ZuulServlet處理。
到這里還沒有結(jié)束,還有一個很坑的地方,在最后以前pre過濾器中,他會對url進(jìn)行處理。如果該請求是ZuulServlet處理的,那么他會把url的前面幾位用的zuulServletPath替代,zuulServletPath默認(rèn)就是剛才我們替代的前綴 /zuul。那么如果你不處理的話,你的請求路徑將會變化。所以在這里我們將這個默認(rèn)的zuulServletPath改成空值,就不會替換啦。在配置文件里面加上:
zuul.servletPath:
后面的值不填。
到這里,問題算是結(jié)束了,最后把我們重寫的那個方法注入到spring。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/67827.html
摘要:二實現(xiàn)步驟添加引用包模塊客戶端發(fā)現(xiàn)模塊監(jiān)控和管理生產(chǎn)環(huán)境的模塊添加應(yīng)用配置文件,默認(rèn),默認(rèn)打印日志添加簡單的上傳文件頁面添加上傳文件控制器上傳文件控制器。添加文件服務(wù)啟動類簡單文件上傳微服務(wù)采取或者頁面點擊實現(xiàn)文件上傳。 SpringCloud(第 023 篇)簡單文件上傳微服務(wù)采取curl或者頁面點擊實現(xiàn)文件上傳 - 一、大致介紹 1、本章節(jié)主要搭建了一個簡單的頁面上傳Web控制器,...
摘要:但是如果將負(fù)載均衡器置于所有服務(wù)前便不是一個好主意,會造成瓶頸。服務(wù)超時使用的和庫來進(jìn)行請求。支持以下四種過濾器前置過濾器在將請求發(fā)送到目的地之前被調(diào)用。通常用于記錄從目標(biāo)服務(wù)返回的響應(yīng)處理錯誤或?qū)徍嗣舾行畔ⅰ? showImg(https://segmentfault.com/img/remote/1460000019531578); springcloud 總集:https://ww...
摘要:提供給文件上傳微服務(wù)用的。注意注解能注冊到服務(wù)上,是因為該注解包含了客戶端的注解,該是一個復(fù)合注解。地址可以查看該微服務(wù)網(wǎng)關(guān)代理了多少微服務(wù)的。 SpringCloud(第 024 篇)簡單文件上傳微服務(wù),并加入 zuul 微服務(wù)后用 zuul 微服務(wù)地址采取curl或者頁面點擊實現(xiàn)文件上傳 - 一、大致介紹 1、本章節(jié)主要將文件上傳微服務(wù)加入到 zuul 服務(wù)中去,然后利用 zuul...
摘要:前面我們講解了整合,詳細(xì)請查看文章阿里支持啦目前來說,大部分公司線上的網(wǎng)關(guān)應(yīng)該是,所以今天我們就來看看如何在中整合。 前面我們講解了Sentinel整合Spring Cloud Gateway,詳細(xì)請查看文章:阿里Sentinel支持Spring Cloud Gateway啦 目前來說,大部分公司線上的網(wǎng)關(guān)應(yīng)該是Zuul,所以今天我們就來看看如何在Zuul中整合Sentinel。本來想...
閱讀 909·2021-09-09 09:32
閱讀 2849·2021-09-02 10:20
閱讀 2685·2021-07-23 11:24
閱讀 824·2019-08-30 15:54
閱讀 3631·2019-08-30 15:54
閱讀 1346·2019-08-30 11:02
閱讀 2844·2019-08-26 17:40
閱讀 1122·2019-08-26 13:55