Spring Cloud 分佈式利用feignClient上傳文件問題

Spring Cloud 分佈式利用feignClient上傳文件失敗解決方案
1.添加依賴
在這裏插入圖片描述

2.接收文件Service代碼
在這裏插入圖片描述
在這裏插入圖片描述

3.ribbon-server 模塊代碼
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
重點是FeignMultipartConfig,這個配置網上有很多,我也參考了很多爲大神的寫法,不知道是我配置出問題了還是哪裏出錯了,各種方式都試過了,結果發現不夠完美,其中用了@RequestLine(“POST”)文件是能夠傳到service的,但是有字符串參數(Json字符串)沒法用post直接傳過去,最終還是放棄了這個方案。從剛開始的請求不到接收文件的service端,到service能接到文件,費盡周折。先附上從大神出撈來的代碼截圖。
在這裏插入圖片描述

這個寫法是能夠把文件傳過去,json字符串也能傳到service,當時心裏一陣竊喜,總算搞定了。於是乎代碼上傳打卡下班,第二天上班同事說,帶有RequestBody的請求從ribbon-server請求到其他service都不行了!說是把我這個配置類取消就可以!當時一個尷尬啊。然後又默默的看源碼,繼續在某度、github、google上搜,發現最終版其實跟現在差不多,最終版本如下在這裏插入圖片描述
問題終於搞定了,發現自身問題還是很明顯的,源碼看的少,翻看源碼即可發現,new SpringFormEncoder(new SpringEncoder(messageConverters))與new SpringFormEncoder()的區別。
SpringFormEncoder源碼在這裏插入圖片描述

SpringEncoder源碼
在這裏插入圖片描述

我大概理解就是,如果請求是不帶MultipartFile,則直接返回SpringEncoder處理方式,帶有MultipartFile則

MultipartFile file = (MultipartFile) object;

Map data = Collections.singletonMap(file.getName(), object);

new SpringMultipartEncodedDataProcessor().process(data, template);

在下新手,第一次寫文章,大佬們勿噴,喜歡的大佬可以給個贊。
最後附上大神的鏈接,向高手致敬!
https://github.com/OpenFeign/feign-form
http://blog.csdn.net/tony_lu229/article/details/73823757
有問題歡迎留言,或者在我的公衆號上留言,微信搜索:forkroad

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章