遇到的问题:接收前端的MultipartFile file,使用seaweedFS上传文件,调用它的FileTemplate的saveFileByStream方法,传两个参数,fileName和inputStream,

传递fileName我使用MultipartFile 的getName方法,问题出现了

getName()是获取表单中文件组件的名字,这里我一直获取的fileName值为 "file" 的字符串

getOriginalFilename()是获取上传文件名称,能正确拿到上传文件名

 

下图是源码中对getName()和getOriginalFilename()的解释

 

简单来说,getName从multipart form中获取,multipart form是表单中文件组件的名字,而表单中文件组件的名字是什么呢?前端同事给了我上传文件的截图,如下

 

 表单中文件组件的名字就是 'file',所以我每次上传getName获取的都是'file',item就是要上传的文件。

 

更重要的一点:在swagger中,文件上传请求接口中,上传文件的参数名字就叫file

 

 

 

前端按照参数名字来设置 表单中文件组件的名字,当我修改参数名字之后,我改为aaa,如下

 

 

 

我上传文件,后台debug,getName()得到的竟然是 "aaa",如下

 

 

 

最后,getName() 获取表单中文件组件的名字的最终解释:

前端按照 后台接口的参数名,来上传文件,表单中文件组件的名字就是上传文件的参数(假设没有其他参数),

getName()拿到的就是自己的参数名了。。

posted on 2020-05-29 10:20  audience7510  阅读(820)  评论(1)    收藏  举报