轉載請標明出處:
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"即可。
解決方案
首先列出我的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
測試一下,果然通過,上傳中文名的檔案亂碼問題解決。
關注我的公眾號
精彩內容不能錯過!