wor*_*l.j 13 java spring file-upload spring-mvc
我使用Spring MVC3来处理我的Web应用程序的文件上传.现在,我可以使用我的xml上下文文件中定义的以下配置来限制上传的文件大小:
<beans:bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<beans:property name="maxUploadSize" value="200000"/>
</beans:bean>
Run Code Online (Sandbox Code Playgroud)
我已经在网上搜索了如何限制文件类型但无济于事.我发现的大多数文章只教导如何限制文件大小而不是文件类型.提前感谢您的帮助.
尝试在控制器的请求处理程序方法中执行检查/路由:
@RequestMapping("/save")
public String saveSkill(@RequestParam(value = "file", required = false) MultipartFile file) {
if(!file.getContentType().equalsIgnoreCase("text/html")){
return "normalProcessing";
}else{
return "redirect: /some/page";
}
}
Run Code Online (Sandbox Code Playgroud)
您可以按文件类型限制文件上载,可以扩展org.springframework.web.multipart.commons.CommonsMultipartResolver
类.并使用添加方法来检查文件内容类型或文件类型MultipartFile
.
提供文件类型,您希望在配置中限制的文件类型,如 -
<beans:bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<beans:property name="maxUploadSize" value="200000"/>
<beans:property name="restrictFileTypes" value="html,pdf,..."/>
</beans:bean>
Run Code Online (Sandbox Code Playgroud)
您可以创建一个用户定义的方法来执行此检查:
String fileExtensions = ".exe,.dmg,.mp3,.jar";
String fileName = multipartFile.getOriginalFilename();
int lastIndex = fileName.lastIndexOf('.');
String substring = fileName.substring(lastIndex, fileName.length());
Run Code Online (Sandbox Code Playgroud)
并检查条件:
if (!fileExtensions.contains(substring.toLowerCase()))
//reject logic
else
//accept logic
Run Code Online (Sandbox Code Playgroud)