如何限制上传到Spring MVC3 Controller的文件类型

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)

我已经在网上搜索了如何限制文件类型但无济于事.我发现的大多数文章只教导如何限制文件大小而不是文件类型.提前感谢您的帮助.

Kev*_*sox 7

尝试在控制器的请求处理程序方法中执行检查/路由:

@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)


Avi*_* T. 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>
Run Code Online (Sandbox Code Playgroud)

  • 谁会调用检查文件类型的方法? (4认同)

Nar*_*dra 5

您可以创建一个用户定义的方法来执行此检查:

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)