最近在做文件上传,看到SPRINGMVC以做了一些封装,就打算以使用它来做上传.但马我就遇到了接收不到文件参数的问题.都是按照网上的说法,在控制器那里按名字注入.即:
@ResponseBody
@RequestMapping(value = "/recive")
public String recive(@RequestParam(value = "files")MultipartFile file{
...
}
页面代码:
<li class="uk-width-1-1">
<a class="uk-form-file">选择文件<input id="upload-select" name="files" type="file"></a>
<div id="progressbar"></div>
</li>
由于前端使用了UIKIT的上传组件,所以没使用form形式上传.为了进一步确定参数名不一致问题我看了页面控制台和JAVA控制台,分别如下:
控制台日志:
[8080-33] DEBUG 在 [o.s.w.m.c.CommonsFileUploadSupport] 的第 271 行 - Found multipart file [files[]] of size 7137 bytes with original filename [bcgs.png], stored in memory
这么看来,很明显后台是收到了文件,但控制器方法就是按不到参数.
最终尝试性的修改了一下,问题得到解决.关于在于:
@ResponseBody
@RequestMapping(value = "/recive")
public String recive(@RequestParam(value = "files[]")MultipartFile file{
...
}
即,@RequestParam(value = "files[]")严格匹配的,当中的"[]"也是不可省的.在此做以记录,以备后查.