SpringCloud通過網關上傳文件文件名中文亂碼問題解決
阿新 • • 發佈:2019-01-27
中文亂碼問題 沒有 服務 pri 而且 art 背景 load 使用 背景
最近做一個文件上傳服務,所以接口必須經過網關(zuul)調用。前後斷分離後前端使用vue開發,後臺是springcloud微服務。但是在文件上傳時,出現文件名中文亂碼的問題,multipart file取出來的文件名中文亂碼。
排除思路
1.檢查前端請求頭是否正確
2.檢查網關是否有問題
3.比較經過網關調用接口和不經過網關直接調用接口中文是否亂碼
備註:1,2,都沒有問題。測試3時,發現不經過網關時,中文不會亂碼,一旦經過網關就會出現亂碼問題,那麽問題的定位就知道了。經過網關時,肯定是zuul進行了某些處理(後面詳細講解解決方案時,進行講解)。
解決方案
1.接口訪問前加上zuul
比如說: 問題接口:http://xxxxxxx/v1/fileupload/oss/upload 修正接口:http://xxxxxxx/zuul/v1/fileupload/oss/upload 該種方案解決了中文亂碼問題,但是前端需要針對上傳接口做特殊處理, 這樣對於前端同學來說是不合理的,前端做了代理接口,就因為亂碼問題需要做特殊處理 ,這並不合理。而且問題的原因在於網關做了處理,所以對於前端同學來說為此付出 不符合職責劃分。
2.配置zuul的servlet-path為/
該種方式是在網關的配置文件中,加入如下配置
zuul:
servlet-path: /
該種方式是在網關解決了問題,我個人比較推薦這種方式去解決,前端後端都不需要做任何多余的處理或者特殊處理,只需要加一個配置而已。
出現問題第一反應就是進入官方文檔進行查找。
Zuul文件上傳代理官方文檔
SpringCloud通過網關上傳文件文件名中文亂碼問題解決