java spring上传文件大小_使用Tomcat在Spring中上传文件与允许的最大大小有关

我对Spring相当陌生,我想拥有一个多部分表单并处理MaxUploadSizeExceededException异常,以便在jsp中显示错误消息。我遇到的主要问题是MaxUploadSizeLimitExceededExceptionResolver类中的ModelAndView对象,我不知道如何将其用于上述目的。

我拥有的文件:1)模型类UploadItem.java。2)查看表单UploadForm.jsp。3)控制器Uploadcontroller.java。4)类MaxUploadSizeLimitExceededExceptionResolver.java处理异常Uploadcontroller

1)模型UploadItem

public class UploadItem {

private String name;

private CommonsMultipartFile fileData;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public CommonsMultipartFile getFileData() {

return fileData;

}

public void setFileData(CommonsMultipartFile fileData) {

this.fileData = fileData;

}

}

2)查看表单UploadForm.jsp

Upload form

Upload Fields

Name

File

3)控制器上传控制器

public class Uploadcontroller {

@RequestMapping(method = RequestMethod.GET)

public String getUploadForm(Model model) {

model.addAttribute(new UploadItem());

return "upload/uploadForm";

}

@RequestMapping(method = RequestMethod.POST)

public String create(HttpServletRequest request, UploadItem uploadItem,

BindingResult result, Exception exception) {

if (result.hasErrors()) {

// logger.info("create upload");

for (ObjectError error : result.getAllErrors()) {

System.err.println("Error: " + error.getCode() + " - "

+ error.getDefaultMessage());

}

return "upload/uploadForm";

}

System.err.println("Test upload: " + uploadItem.getName());

System.err.println("Test upload: "

+ uploadItem.getFileData().getOriginalFilename());

// TODO redirect this

return "/home";

}

}

4)处理异常的组件Uploadcontroller

@Component

public class MaxUploadSizeLimitExceededExceptionResolver extends

SimpleMappingExceptionResolver {

private static final Logger logger = LoggerFactory

.getLogger(HomeController.class);

@Override

public ModelAndView resolveException(HttpServletRequest request,

HttpServletResponse response, Object handler, Exception exception) {

Map model = new HashMap();

logger.info("getUploadForm at the beggining");

ModelAndView modelView = new ModelAndView();

if (exception instanceof MaxUploadSizeExceededException)

{

model.put("errors", exception.getMessage());

modelView.addObject("errors", exception.getMessage());

logger.info("getUploadForm: MaxUploadSizeExceededException" );

} else

{

model.put("errors", "Unexpected error: " + exception.getMessage());

modelView.addObject("errors", "Unexpected error: " +exception.getMessage());

}

logger.info("getUploadForm at the end" );

model.put("uploadedFile", new UploadItem());

modelView.addObject(new UploadItem());//("uploadedFile", new UploadItem());

modelView.setViewName("/upload/uploadForm");

return modelView;

}

}

编辑以添加更多详细信息:实际上,问题出在另一个方向。我的maxUploadSize文件的大小设置为1MB,但是我试图对大于3

MB的文件进行测试。当我尝试使用一个文件直到最大2

MB正常工作时。问题是我得到了ERR_CONNECTION_RESET,似乎与Tomcat有关,它是maxSwallowSize的配置->stackoverflow.com/questions/29113262/…。我将继续研究并保持该线程更新。

新的消息。我尝试使用Tomcat 7.0.61,错误是ERR_CONNECTION_ABORTED我尝试使用Tomcat 6.0.43,没有错误!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
限制Spring Boot应用程序特定路径上传的文件大小,可以在应用程序的配置文件添加以下配置: ``` spring.servlet.multipart.max-file-size=10MB spring.servlet.multipart.max-request-size=10MB ``` 上述配置会将上传的文件大小限制为10MB。 然后,为了限制特定路径下的上传文件大小,需要在应用程序创建一个`MultipartConfigElement` bean,并将其应用于指定路径的控制器或方法。 例如,假设我们要限制路径`/upload`下的上传文件大小,我们可以在应用程序添加以下代码: ```java @Configuration public class WebConfig { @Bean MultipartConfigElement multipartConfigElement() { long maxFileSize = 10 * 1024 * 1024; // 10MB long maxRequestSize = 10 * 1024 * 1024; int fileSizeThreshold = 0; return new MultipartConfigElement("/tmp", maxFileSize, maxRequestSize, fileSizeThreshold); } @Bean public WebMvcConfigurer webMvcConfigurer() { return new WebMvcConfigurerAdapter() { @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(new HandlerInterceptor() { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (request.getRequestURI().startsWith("/upload")) { request.setAttribute("org.apache.tomcat.websocket.DISPATCHER", true); request.setAttribute("multipartConfigElement", multipartConfigElement()); } return true; } }); } }; } } ``` 上述代码创建了一个`MultipartConfigElement` bean,并在`preHandle`方法将其应用于路径以`/upload`开头的请求。 请注意,上述代码使用了过时的`WebMvcConfigurerAdapter`类。如果你使用的是Spring Boot 2.0或更高版本,则应该使用`WebMvcConfigurer`接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值