如何处理MaxUploadSizeExceededException

MaxUploadSizeExceededException当我上传的文件大小超过允许的最大值时,会出现异常。我想在出现此异常时显示一条错误消息(如验证错误消息)。如何在Spring

3中处理此异常以执行类似的操作?

谢谢。

回答:

我终于找到了一个使用HandlerExceptionResolver的解决方案。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    

<!-- the maximum size of an uploaded file in bytes -->

<!-- <property name="maxUploadSize" value="10000000"/> -->

<property name="maxUploadSize" value="1000"/>

</bean>

package com.mypkg.models;

import org.springframework.web.multipart.commons.CommonsMultipartFile;

public class UploadedFile

{

private String title;

private CommonsMultipartFile fileData;

public String getTitle()

{

return title;

}

public void setTitle(String title)

{

this.title = title;

}

public CommonsMultipartFile getFileData()

{

return fileData;

}

public void setFileData(CommonsMultipartFile fileData)

{

this.fileData = fileData;

}

}

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>

<head>

<title>Test File Upload</title>

</head>

<body>

<h1>Select a file to upload</h1>

<c:if test="${not empty errors}">

<h2 style="color:red;">${errors}.</h2>

</c:if>

<form:form modelAttribute="uploadedFile" method="post" enctype="multipart/form-data" name="uploadedFileform" id="uploadedFileform">

<table width="600" border="0" align="left" cellpadding="0" cellspacing="0" id="pdf_upload_form">

<tr>

<td width="180"><label class="title">Title:</label></td>

<td width="420"><form:input id="title" path="title" cssClass="areaInput" size="30" maxlength="128"/></td>

</tr>

<tr>

<td width="180"><label class="title">File:</label></td>

<td width="420"><form:input id="fileData" path="fileData" type="file" /></td>

</tr>

<tr>

<td width="180"></td>

<td width="420"><input type="submit" value="Upload File" /></td>

</tr>

</table>

</form:form>

</body>

</html>

-FileUploadController.java:包com.mypkg.controllers;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.validation.BindingResult;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import org.springframework.web.multipart.MaxUploadSizeExceededException;

import org.springframework.web.servlet.HandlerExceptionResolver;

import org.springframework.web.servlet.ModelAndView;

import com.mypkg.models.UploadedFile;

@Controller

public class FileUploadController implements HandlerExceptionResolver

{

@RequestMapping(value = "/upload", method = RequestMethod.GET)

public String getUploadForm(Model model)

{

model.addAttribute("uploadedFile", new UploadedFile());

return "/upload";

}

@RequestMapping(value = "/upload", method = RequestMethod.POST)

public String create(UploadedFile uploadedFile, BindingResult result)

{

// Do something with the file

System.out.println("######### File Uploaded with Title: " + uploadedFile.getTitle());

System.out.println("######### Creating local file: /var/test-file-upload/" + uploadedFile.getFileData().getOriginalFilename());

try

{

InputStream in = uploadedFile.getFileData().getInputStream();

FileOutputStream f = new FileOutputStream(

"/var/test-file-upload/" + uploadedFile.getFileData().getOriginalFilename());

int ch = 0;

while ((ch = in.read()) != -1)

{

f.write(ch);

}

f.flush();

f.close();

}

catch (IOException e)

{

e.printStackTrace();

}

return "redirect:/";

}

/*** Trap Exceptions during the upload and show errors back in view form ***/

public ModelAndView resolveException(HttpServletRequest request,

HttpServletResponse response, Object handler, Exception exception)

{

Map<String, Object> model = new HashMap<String, Object>();

if (exception instanceof MaxUploadSizeExceededException)

{

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

} else

{

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

}

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

return new ModelAndView("/upload", model);

}

}

========================================================================

以上是 如何处理MaxUploadSizeExceededException 的全部内容, 来源链接: utcz.com/qa/415184.html

回到顶部