我正在使用Spring MVC3来处理我的Web应用程序的文件上传。现在,我可以使用我的xml上下文文件中定义的以下配置来限制上传的文件大小:
<beans:bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<beans:property name="maxUploadSize" value="200000"/>
</beans:bean>
我已经在网上搜索了如何限制文件类型但无济于事。我发现的大多数文章只教导如何限制文件大小而不是文件类型。 提前感谢您的帮助。
答案 0 :(得分:6)
尝试在控制器的请求处理程序方法中执行检查/路由:
@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";
}
}
答案 1 :(得分:5)
您可以按文件类型限制文件上传,您可以扩展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>
答案 2 :(得分:2)
您可以创建用户定义的方法来执行此检查:
String fileExtentions = ".exe,.dmg,.mp3,.jar";
fileName = multipartFile.getOriginalFilename();
int lastIndex = fileName.lastIndexOf('.');
String substring = fileName.substring(lastIndex, fileName.length());
检查条件:
if (!fileExtentions.contains(substring))
//logic
else
//logic
答案 3 :(得分:0)
您还可以检查Mime类型,并根据您可以限制用户上传文件 这里将使用JMimeMagic Library。
MagicMatch match = Magic.getMagicMatch(file.getBytes());
System.out.println(match.getMimeType());