遇到的问题:接收前端的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()拿到的就是自己的参数名了。。
浙公网安备 33010602011771号