elasticsearch入門系列">elasticsearch入門系列
839
2022-05-29
問題描述
在項目中又一個上傳文件的oss服務,直接調用服務的上傳文件成功,如果經過網關zuul服務,上傳中文名字的文件,文件名會出現亂碼,最終導致上傳失敗,如果上傳英文名字的文件,沒有任何問題。懷疑網關zuul對中文做編碼處理。
解決問題的過程
這個問題出現之后,我個人的解決辦法如下:
·??????第一反應是看文檔,文檔地址:http://cloud.spring.io/spring-cloud-static/Dalston.SR1/#_uploading_files_through_zuul
·??????粗略地看了下文檔,以為沒有給出解決方案(其實已經給出,只是沒有理解好文檔)。狂擼源碼,依然沒有找到解決辦法。
·??????Google搜,搜到了這條Issue,https://github.com/spring-cloud/spring-cloud-netflix/issues/1385
這位大神給出的解決辦法,使用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
測試一下,果然通過,上傳中文名的文件亂碼問題解決。
方志朋簡介:SpringCloud中國社區聯合創始人,博客訪問量突破一千萬,愛好開源,熱愛分享,活躍于各大社區,保持著非常強的學習驅動力,終身學習踐行者,終身學習受益者。目前就職于國內某家知名互聯網保險公司,擔任DEVOPS工程師,對微服務領域和持續集成領域研究較深,精通微服務框架SpringCloud
網絡安全 Spring Cloud
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。