我尝试使用 Spring 将多部分文件发送到控制器,当我将数据发布到URL时,我收到此错误:
由于未提供多部件配置,因此无法处理部件。
我到处都搜索过,我的问题仍未解决......我不知道自己做错了什么。
以下是我的一些代码:
上传控制器
@Controller
public class UploadController {
@RequestMapping(value="/upload", method= RequestMethod.GET)
public @ResponseBody String provideUploadInfo() {
return "You can upload a file by posting to this same URL.";
}
@RequestMapping(value="/upload", method=RequestMethod.POST)
public @ResponseBody String handleFileUpload(MultipartHttpServletRequest request, Principal principal){
User activeUser = principal == null ? null
: (User) ((Authentication) principal).getPrincipal();
return "whatever";
}
}
应用-servlet.xml中
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="100000"/>
</bean>
似乎我有需要放入的全部内容。我在Tomcat 8服务器上运行此应用程序。
修改
根据Sotirios Delimanolis和zeroflagL提供的提示,我的代码已更新。
我做了几次测试,当我尝试上传比限制允许的更大的文件时,我明白了:
超过最大上传大小100000字节;嵌套异常是org.apache.commons.fileupload.FileUploadBase $ SizeLimitExceededException:请求被拒绝,因为它的大小(229305)超过了配置的最大值(100000)
这意味着multipartResolver
已成功到达,不是吗?
但是,我仍然没有 没有提供多部分配置文件 错误。怎么可能呢?
提前致谢!
答案 0 :(得分:1)
我的问题通过以下步骤解决了:
第1步:
要使用 CommonsMultipartResolver 处理文件上传,我们需要添加以下依赖项:
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
第二步:
现在我们可以在我们的Spring配置中定义CommonsMultipartResolver bean。
此MultipartResolver带有一系列set方法,用于定义属性,例如上传的最大大小:
@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(100000);
return multipartResolver;
}
第3步:
<form:form method="POST" action="/spring-mvc-xml/uploadFile" enctype="multipart/form-data">
<table>
<tr>
<td><form:label path="file">Select a file to upload</form:label></td>
<td><input type="file" name="file" /></td>
</tr>
<tr>
<td><input type="submit" value="Submit" /></td>
</tr>
</table>
</form>
第四步:
我们可以从控制器方法内的request参数中检索此变量:
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public String submit(@RequestParam("file") MultipartFile file, ModelMap modelMap) {
modelMap.addAttribute("file", file);
return "fileUploadView";
}