Zuul上傳檔案,中文檔名亂碼解決辦法

方誌朋發表於2017-08-14

轉載請標明出處:
blog.csdn.net/forezp/arti…
本文出自方誌朋的部落格

問題描述

在專案中又一個上傳檔案的oss服務,直接呼叫服務的上傳檔案成功,如果經過閘道器zuul服務,上傳中文名字的檔案,檔名會出現亂碼,最終導致上傳失敗,如果上傳英文名字的檔案,沒有任何問題。懷疑閘道器zuul對中文做編碼處理。

解決問題的過程

這個問題出現之後,我個人的解決辦法如下:

  • 第一反應是看文件,文件地址:cloud.spring.io/spring-clou…

  • 粗略地看了下文件,以為沒有給出解決方案(其實已經給出,只是沒有理解好文件)。狂擼原始碼,依然沒有找到解決辦法。

  • Google搜,搜到了這條Issue,github.com/spring-clou…

這位大神給出的解決辦法,使用zuul servlet去上傳檔案,而不是預設的spring mvc。使用 zuul servlet之需要在請求uri,前面加上"/zuul"即可。

image.png
image.png

解決方案

首先列出我的zuul服務的配置:

server.port: 5000
zuul:
   routes:
      oss-api:
      path: /oss/**
      serviceId: oss-service複製程式碼

oss服務上傳檔案的介面,程式碼如下:

@RestController
@RequestMapping("/file")
public class FileUploadController {
    @PostMapping("/upload")  
    public RespDTO handleFileUpload(@RequestParam("file") MultipartFile file) {
        //上傳程式碼省略
        return RespDTO.onSuc(upLoadResult);
    }複製程式碼

那麼,經過閘道器,呼叫上傳檔案的url地址如下:

localhost:5000/oss/file/upload

這時如果出現中文檔名,上傳檔案的檔名會出現失敗。按照上述大神的辦法,直接在這個uri,前面加上"/zuul",那麼請求地址如下:

localhost:5000/zuul/oss/file/upload

測試一下,果然通過,上傳中文名的檔案亂碼問題解決。

關注我的公眾號

精彩內容不能錯過!

forezp.jpg
forezp.jpg

相關文章