轉載請標明出處:
blog.csdn.net/forezp/arti…
本文出自方誌朋的博客git
在項目中又一個上傳文件的oss服務,直接調用服務的上傳文件成功,若是通過網關zuul服務,上傳中文名字的文件,文件名會出現亂碼,最終致使上傳失敗,若是上傳英文名字的文件,沒有任何問題。懷疑網關zuul對中文作編碼處理。github
這個問題出現以後,我我的的解決辦法以下:spring
第一反應是看文檔,文檔地址:cloud.spring.io/spring-clou…api
粗略地看了下文檔,覺得沒有給出解決方案(其實已經給出,只是沒有理解好文檔)。狂擼源碼,依然沒有找到解決辦法。bash
Google搜,搜到了這條Issue,github.com/spring-clou…mvc
這位大神給出的解決辦法,使用zuul servlet去上傳文件,而不是默認的spring mvc。使用 zuul servlet之須要在請求uri,前面加上"/zuul"便可。app
首先列出個人zuul服務的配置:測試
server.port: 5000
zuul:
routes:
oss-api:
path: /oss/**
serviceId: oss-service複製代碼
oss服務上傳文件的接口,代碼以下:ui
@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
測試一下,果真經過,上傳中文名的文件亂碼問題解決。
精彩內容不能錯過!