1. 程式人生 > >SpringCloud通過網關上傳文件文件名中文亂碼問題解決

SpringCloud通過網關上傳文件文件名中文亂碼問題解決

中文亂碼問題 沒有 服務 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通過網關上傳文件文件名中文亂碼問題解決