今天遇到一个问题,就是使用MultipartFile进行多文件上传时,报以下异常:
java.lang.NoSuchMethodException: [org.springframework.web.multipart.MultipartFile;.<init>()
at java.lang.Class.getConstructor0(Class.java:2721)
at java.lang.Class.getDeclaredConstructor(Class.java:2002)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104)说是找不到这个方法,然后我的控制器的请求参数是这样写的:
public String uploadHttpServletRequest request,HttpServletResponse response,MultipartFile[] videoFiles){..................}单个文件上传直接用MultipartFile就行了,多文件上传需要使用<span style="font-family: Arial, Helvetica, sans-serif;">MultipartFile[],但是这样写请求参数就报了上面那个异常,</span>经查找资料得知应该这样写,加上@RequestParam
public String multipart(HttpServletRequest request,HttpServletResponse response,
@RequestParam(value="videoFiles",required=true)MultipartFile[] videoFiles){}问题解决!
但是我不是很明白为什么要加上@RequestParam注解,这个注解的作用不就是绑定url的参数,然后将url对应参数的值注入给方法的参数么?如果url的参数名和方法的参数名一致不是可以不用写的么,spring不是会自动set进去的么?单个文件上传时,我方法的请求参数直接写
MultipartFile videoFiles也是可以正常通过的,但是为什么多文件上传时,就一定要加上@RequestParam呢,虽然问题解决了,但是不是很明白。。。
希望懂的人回复一下。。。
本文解释了在Spring框架中,为何在多文件上传请求参数中需要使用@RequestParam注解,以及该注解在绑定URL参数到方法参数过程中的具体作用。通过实例分析,读者能更好地理解其原理并避免常见错误。


被折叠的 条评论
为什么被折叠?



