`
Wind_ZhongGang
  • 浏览: 264712 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring集成Commons fileupload,文件上传

阅读更多

  Commons fileupload是当前比较流行的文件上传组件,Spring为提供了对Commons fileupload的集成,只需简单几步便可轻易实现文件上传,十分简便。

 

  一。引入必要的jar包

 

<dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>3.0.5.RELEASE</version>
        </dependency>

<!-- commons-fileupload dependencies -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2.2</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.3.2</version>
        </dependency>

 

  Spring提供的集成Commons fileupload的接口和类都在spring-webmvc这个包里,如

  CommonsMultipartResolver,CommonsFileUploadSupport,MultipartResolver,

  MultipartHttpServletRequest等。

 

  二。定义multipartResolver bean

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="maxInMemorySize" value="10240"/>
        <property name="maxUploadSize" value="50000000"/>
    </bean>
</beans>

  multipartResolver这个标志符是固定不可改变的,因为研究Spring源代码发现在核心控制器DispatcherServlet

  里,有这样几段代码:

 

 

/** Well-known name for the MultipartResolver object in the bean factory for this namespace. */
	public static final String MULTIPART_RESOLVER_BEAN_NAME = "multipartResolver";
 

 


/**
	 * Initialize the MultipartResolver used by this class.
	 * <p>If no bean is defined with the given name in the BeanFactory for this namespace,
	 * no multipart handling is provided.
	 */
	private void initMultipartResolver(ApplicationContext context) {
		try {
			this.multipartResolver = context.getBean(MULTIPART_RESOLVER_BEAN_NAME, MultipartResolver.class);
			if (logger.isDebugEnabled()) {
				logger.debug("Using MultipartResolver [" + this.multipartResolver + "]");
			}
		}
		catch (NoSuchBeanDefinitionException ex) {
			// Default is no multipart resolver.
			this.multipartResolver = null;
			if (logger.isDebugEnabled()) {
				logger.debug("Unable to locate MultipartResolver with name '" + MULTIPART_RESOLVER_BEAN_NAME +
						"': no multipart request handling provided");
			}
		}
	} 

   这以上代码发现,Spring使 用MULTIPART_RESOLVER_BEAN_NAME这个名字来获取在

  application-context.xml定义的CommonsMultipartResolver bean,该bean用于解析上传文件表单。

 

  三。一个简单的文件上传表单控制器

  package com.dream.controllers.photo;

import com.dream.model.photo.Photo;
import com.dream.service.standard.PhotoService;
import com.dream.utils.StringChecker;
import org.springframework.validation.BindException;
import org.springframework.web.bind.ServletRequestUtils;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.SimpleFormController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;

/**
 * Created by IntelliJ IDEA.
 * User: Zhong Gang
 * Date: 11-8-15
 * Time: 下午10:12
 */
public class PhotoFormController extends SimpleFormController {
    private static final String FILE_UPLOAD_PATH = "F://jetty-distribution-7.4.5.v20110725//upload//";
    private PhotoService photoService;

    public PhotoFormController() {
        setCommandName("photo");
        setCommandClass(Photo.class);
        setFormView("photo/photoform");
    }

    @Override
    protected Object formBackingObject(HttpServletRequest request) throws Exception {
        String photoGuid = ServletRequestUtils.getStringParameter(request, "photoGuid");
        if (StringChecker.hasText(photoGuid)) {
            Photo photo = photoService.loadPhotoByGuid(photoGuid);
            return photo;
        }
        return new Photo();
    }

    @Override
    protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws Exception {
        Photo photo = (Photo) command;
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        MultipartFile file = multipartRequest.getFile("file");
        String fileName = file.getOriginalFilename();
        String path = FILE_UPLOAD_PATH + fileName;
        photo.setPath(fileName);
        File destination = new File(path);
        file.transferTo(destination);
        photoService.saveOrUpdate(photo);
        return new ModelAndView("photo/photoview", "photo", photo);
    }

    public void setPhotoService(PhotoService photoService) {
        this.photoService = photoService;
    }
}

 

  四。文件上传表单

 

<%--
  Created by IntelliJ IDEA.
  User: ZhongGang
  Date: 11-8-15
  Time: 下午10:34
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <title>Photo form</title>
    <link href="/resources/css/main.css" rel="stylesheet" type="text/css" media="screen"/>
</head>
<body>
<div id="wrapper">

    <jsp:include page="../decorator/header.jsp"/>

    <div id="page">
        <div>
            <form:form commandName="photo" enctype="multipart/form-data">
                <table>
                    <tr>
                        <td>Name :</td>
                        <td>
                            <form:input path="name"/>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            Upload file:
                        </td>
                        <td>
                            <input type="file" name="file"/>
                        </td>
                    </tr>
                    <tr>
                        <td>Description :</td>
                        <td>
                            <form:input path="description"/>
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <input type="submit" value="Submit"/>
                        </td>
                    </tr>
                </table>
            </form:form>
        </div>
    </div>

    <jsp:include page="../decorator/footer.jsp"/>

</div>
</body>
</html>
1
0
分享到:
评论
2 楼 Wind_ZhongGang 2014-11-11  
yo8237233 写道
你这样的话如果上传文件超过了50000000就会报异常

根据实际需要自己定
1 楼 yo8237233 2014-11-08  
你这样的话如果上传文件超过了50000000就会报异常

相关推荐

    commons fileupload

    Commons FileUpload是Apache组织提供的一款强大的Java文件上传处理组件,常用于Web应用中处理用户通过表单上传的文件。在Web开发中,尤其是在涉及到用户上传照片、文档等大文件时,FileUpload组件提供了方便、高效的...

    commons-fileupload-1.3.1.jar

    在实际应用中,结合Servlet或Spring MVC等框架,可以轻松地集成Apache Commons FileUpload,处理用户的文件上传请求,从而构建安全、可靠的文件上传功能。同时,这个库也支持自定义策略,如文件存储路径、临时文件...

    commons-fileupload及源码

    7. **与其他库的集成**:Apache Commons FileUpload可与Servlet API、Spring MVC、Struts等Web框架无缝集成,简化了在这些框架中实现文件上传的复杂性。 源码分析对于理解其内部工作原理非常有帮助。`commons-...

    commons-fileupload上传组件

    7. **与其他组件集成**:FileUpload常与Spring MVC、Struts等框架集成,处理文件上传请求。通过了解其工作原理,开发者可以更好地调试和优化与这些框架的交互。 总的来说,Apache Commons FileUpload是处理HTTP文件...

    commons-fileupload-1.2.2-bin.zip

    7. **与Struts、Spring等框架的整合**:Commons FileUpload库可以轻松与主流的Java Web框架集成,如Struts、Spring MVC等,使得文件上传功能的实现更加便捷。 总的来说,Apache Commons FileUpload库是Java开发人员...

    commons-fileupload-1.2.1.zip

    总的来说,Apache Commons FileUpload库是Java Web开发中处理文件上传的标准工具之一,它简化了流程,提供了丰富的配置选项,使得开发者能够更加专注于业务逻辑,而不是文件上传的底层细节。通过正确地集成和使用这...

    commons-fileupload-1.4-src.zip

    9. **与Spring框架的整合**:在Spring MVC框架中,FileUpload可以与ModelAndView和MultipartFile接口一起使用,简化文件上传的处理逻辑。 10. **源码分析**:通过查看"commons-fileupload-1.4-src"中的源代码,...

    commons-fileupload-1.2.1.jar

    此外,它也能与Spring MVC、Struts等Web框架无缝集成,简化文件上传的实现。 8. **版本更新**:`1.2.1`是该库的一个较旧版本,后续的版本可能添加了更多功能和修复了已知问题。使用时,建议根据项目需求选择合适且...

    commons-fileupload-1.2.1帮助文档

    《Java Web文件上传:commons-fileupload-1.2.1详解》 在Java Web开发中,文件上传是一项常见的功能,用户可能需要上传图片、文档等各类文件。Apache Commons FileUpload库是一个强大的工具,用于处理HTTP协议中的...

    commons-fileupload-1.2.1-bin.zip

    6. **与其他框架的集成**:Apache Commons FileUpload可方便地与Struts、Spring MVC等Web框架结合,提供优雅的文件上传解决方案。 总之,Apache Commons FileUpload 1.2.1是一个强大的文件上传组件,它简化了在Java...

    commons-fileupload_所需的两个jar文件

    虽然Apache Commons FileUpload库主要处理文件上传,但其内部依赖于Apache Commons IO库来处理基本的文件操作。`commons-io.jar`包含了各种IO相关的工具类,如文件复制、文件比较、流操作等。在处理文件上传时,这些...

    commons-fileupload-1.2.2.jar

    总的来说,Apache Commons FileUpload是Java Web开发中不可或缺的工具,它简化了文件上传操作,使开发者能够专注于业务逻辑,而不是底层的文件处理细节。正确理解和使用这个库,可以提高开发效率,提升用户体验。

    commons-fileupload 上传组件

    `Commons FileUpload`可以轻松与其他Java Web框架集成,如Spring MVC、Struts等。此外,它还可以与其他工具,如Apache Tika(用于文件类型的识别)或Apache POI(用于处理Office文档)结合,提供更丰富的功能。 ###...

    Commons-FileUpLoad(JAR包).zip

    6. **与其他库的集成**:Commons-FileUpload可以很好地与Servlet API和其他Java Web框架(如Spring MVC)集成,使得在各种环境中使用都很方便。 7. **多线程支持**:在高并发环境下,库支持多线程处理上传请求,...

    commons-fileupload-1.3.1-src.tar.gz

    FileUpload库可以很好地与Spring MVC、Struts等其他框架集成,简化文件上传的处理逻辑。 9. **版本更新** “commons-fileupload-1.3.1”是FileUpload的一个稳定版本,相比早期版本,它可能包含了性能优化、新特性...

    fileupload文件上传代码及jar包

    5. **易于集成**:它可以轻松地与Spring MVC、Struts等Web框架集成,提供无缝的文件上传支持。 这个压缩包中可能包含的文件有: - `fileupload`代码示例:这是一段展示如何使用Apache Commons FileUpload库的Java...

    commons-fileupload-1.2.1-all

    此外,也可以与Spring MVC等框架集成,简化文件上传的处理流程。 总结起来,Apache Commons FileUpload是一个强大的工具,能够有效地处理Java Web应用中的文件上传需求。通过理解和使用这个库,开发者可以构建更...

    commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar.zip

    SpringMVC在内部集成了Apache Commons FileUpload,所以我们可以直接使用`@RequestParam("file") MultipartFile file`这样的注解来接收上传的文件。在处理这个参数时,我们需要确保文件有效并将其保存到服务器的某个...

    commons-fileupload-1.2

    除了直接使用外,Commons FileUpload还可以与Spring MVC、Struts等Web框架集成,提供便捷的文件上传处理能力。 总的来说,Apache Commons FileUpload 1.2是一个强大的工具,简化了在JSP应用中实现文件上传和下载的...

    文件上传组件commons-fileupload用户指南

    在Spring MVC中,可以方便地集成FileUpload组件,通过`MultipartFile`接口处理文件上传。只需在控制器方法上添加`@RequestParam("file") MultipartFile file`参数,Spring会自动处理文件上传。 **7. 文件验证** 在...

Global site tag (gtag.js) - Google Analytics