如何处理MaxUploadSizeExceededException [英] How to handle MaxUploadSizeExceededException

查看:119
本文介绍了如何处理MaxUploadSizeExceededException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我上传大小超过允许的最大值的文件时,会出现MaxUploadSizeExceededException 异常。我想显示一个错误消息,当这个异常出现(如验证错误消息)。如何处理这个异常在Spring 3中做这样的事情?



谢谢。

解决方案



将多重分解器添加到您的Spring配置

/ p>

 < bean id =multipartResolverclass =org.springframework.web.multipart.commons.CommonsMultipartResolver> 
<! - 上传文件的最大大小(以字节为单位) - >
<! - < property name =maxUploadSizevalue =10000000/> - >
< property name =maxUploadSizevalue =1000/>
< / bean>

模型 - UploadedFile.java

  package com.mypkg.models; 

导入org.springframework.web.multipart.commons.CommonsMultipartFile;

public class UploadedFile
{
private String title;

私有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;




$ b

查看 - /上传.jsp

 <%@ page language =javacontentType =text / html; charset = ISO-8859-1pageEncoding =ISO-8859-1%> 
<%@ taglib prefix =springuri =http://www.springframework.org/tags%>
<%@ taglib prefix =formuri =http://www.springframework.org/tags/form%>
<%@ taglib prefix =curi =http://java.sun.com/jsp/jstl/core%>
< html>
< head>
< title>测试档案上传< /标题>
< / head>
< body>
< h1>选择要上传的文件< / h1>
< c:if test =$ {not empty errors}>
< h2 style =color:red;> $ {errors}。< / h2>
< / c:if>
< tr>
< td width =180>< label class =title>标题:< / label>< / td>
< td width =420>< form:input id =titlepath =titlecssClass =areaInputsize =30maxlength =128/>< TD>
< / tr>
< tr>
< td width =180>< label class =title>档案:< / label>< / td>
< td width =420>< form:input id =fileDatapath =fileDatatype =file/>< / td>
< / tr>
< tr>
< td width =180>< / td>
< td width =420>< input type =submitvalue =Upload File/>< / td>
< / tr>
< / table>
< / form:form>
< / body>
< / html>

控制器 - FileUploadController.java
package 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;
导入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());
返回/ upload;


@RequestMapping(value =/ upload,method = RequestMethod.POST)
public String create(UploadedFile uploadedFile,BindingResult result)
{
//使用文件
做一些事情System.out.println(######### File Uploaded with Title:+ uploadedFile.getTitle());
System.out.println(#########创建本地文件:/ var / test-file-upload /+ uploadedFile.getFileData()。getOriginalFilename());

尝试
{

InputStream in = uploadedFile.getFileData()。getInputStream();
FileOutputStream f = new FileOutputStream(
/ var / test-file-upload /+ uploadedFile.getFileData()。getOriginalFilename());
int ch = 0; ((ch = in.read())!= -1)

{
f.write(ch);
}
f.flush();
f.close();

catch(IOException e)
{
e.printStackTrace();
}

返回redirect:/;

$ b $ ***上传过程中出现异常,并返回查看错误*** /
public ModelAndView resolveException(HttpServletRequest请求,
HttpServletResponse响应,对象处理程序,异常异常)
{
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());
返回新的ModelAndView(/ upload,model);
}

}

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


MaxUploadSizeExceededException exception appears when I upload a file whose size exceeds the maximum allowed. I want to show an error message when this exception appears (like a validation error message). How can I handle this exception to do something like this in Spring 3?

Thanks.

解决方案

I finally figured out a solution that works using a HandlerExceptionResolver.

Add multipart resolver to your Spring config:

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

Model - UploadedFile.java:

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;
    }

}

View - /upload.jsp:

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

Controller - FileUploadController.java: package 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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆