为普通用户和管理员配置不同maxUploadSize的MultipartResolver,可以通过以下步骤实现:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.multipart.support.StandardServletMultipartResolver;
@Configuration
public class MultipartConfig {
@Bean
public CommonsMultipartResolver commonsMultipartResolver() {
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
commonsMultipartResolver.setMaxUploadSize(1000000); // 设置普通用户上传文件的最大大小为1MB
return commonsMultipartResolver;
}
@Bean
public StandardServletMultipartResolver standardServletMultipartResolver() {
StandardServletMultipartResolver standardServletMultipartResolver = new StandardServletMultipartResolver();
standardServletMultipartResolver.setMaxUploadSize(10000000); // 设置管理员上传文件的最大大小为10MB
return standardServletMultipartResolver;
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Autowired
private CommonsMultipartResolver commonsMultipartResolver;
@Autowired
private StandardServletMultipartResolver standardServletMultipartResolver;
@Override
public void configureHandlerExceptionResolvers(List<HandlerExceptionResolver> resolvers) {
resolvers.add(new MultipartExceptionResolver());
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/uploads/**").addResourceLocations("file:./uploads/");
}
@Bean
public CommonsMultipartResolver multipartResolver() {
return commonsMultipartResolver;
}
@Bean
public StandardServletMultipartResolver standardMultipartResolver() {
return standardServletMultipartResolver;
}
}
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.multipart.MultipartException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
public class MultipartExceptionResolver extends SimpleMappingExceptionResolver {
@Override
protected ModelAndView doResolveException(HttpServletRequest request, HttpServletResponse response, Object handler,
Exception ex) {
if (ex instanceof MultipartException) {
return new ModelAndView("error").addObject("message", "上传文件大小超出限制");
}
return super.doResolveException(request, response, handler, ex);
}
}
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private CommonsMultipartResolver commonsMultipartResolver;
@Autowired
private StandardServletMultipartResolver standardServletMultipartResolver;
@PostMapping("/upload")
public String upload(MultipartFile file) {
// 在这里处理普通用户上传的文件
return "上传成功";
}
@PostMapping("/admin/upload")
public String adminUpload(MultipartFile file) {
// 在这里处理管理员上传的文件
return "上传成功";
}
}
通过以上代码,可以为普通用户和管理员配置不同的maxUploadSize的MultipartResolver。普通用户上传文件的最大大小为1MB,管理员上传文件的最大大小为10MB。
领取专属 10元无门槛券
手把手带您无忧上云