关闭

SpringMVC札集(08)——文件上传

标签: spring mvc上传文件图片源码
1030人阅读 评论(3) 收藏 举报
分类:

自定义View系列教程00–推翻自己和过往,重学自定义View
自定义View系列教程01–常用工具介绍
自定义View系列教程02–onMeasure源码详尽分析
自定义View系列教程03–onLayout源码详尽分析
自定义View系列教程04–Draw源码分析及其实践
自定义View系列教程05–示例分析
自定义View系列教程06–详解View的Touch事件处理
自定义View系列教程07–详解ViewGroup分发Touch事件
自定义View系列教程08–滑动冲突的产生及其处理


探索Android软键盘的疑难杂症
深入探讨Android异步精髓Handler
详解Android主流框架不可或缺的基石
站在源码的肩膀上全解Scroller工作机制


Android多分辨率适配框架(1)— 核心基础
Android多分辨率适配框架(2)— 原理剖析
Android多分辨率适配框架(3)— 使用指南


在本篇博客中将介绍利用SpringMVC实现文件上传

准备jar包

除了之前SpringMVC开发所必备的jar包外,还需要额外准备两个jar包用于文件上传,如下图所示:

这里写图片描述


配置springmvc.xml

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


    <!-- 配置自动扫描 -->
    <context:component-scan base-package="cn.com"></context:component-scan>

    <!-- 配置注解开发所需的处理器映射器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>

    <!-- 配置注解开发所需的处理器适配器 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
        <list>
        <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
        </list>
        </property>
    </bean>

    <!-- 开启文件上传 -->
    <bean id="multipartResolver"   class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    
        <property name="maxUploadSize">    
            <value>1048576000</value>    
        </property>    
            <property name="maxInMemorySize">  
            <value>1024</value>  
        </property>  
    </bean>

    <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsps/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

</beans>
  • 开启SpingMVC的图片上传,请参见代码第35-43行
  • 配置bean的id为multipartResolver
  • 配置上传的最大大小等属性

编写jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试SpringMVC的文件上传</title>
</head>
<body>
    <form action="${pageContext.request.contextPath }/testUpload/uploadFile.do"  method="post" enctype="multipart/form-data">
        <input type="file" name="fileupload"> <input type="submit" value="upload" />
    </form>
</body>
</html>
  • 设置表单上传方式为post
  • 设置enctype的值为multipart/form-data
  • 利用type为file类型的input上传文件

实现Controller

/** 
* @author 原创作者:谷哥的小弟
* @blog   博客地址:http://blog.csdn.net/lfdfhl
* @time   创建时间:2017年7月31日 上午11:38:26 
* @info   描述信息:SpringMVC上传文件
*/
package cn.com.controller;
import java.io.File;
import java.util.Arrays;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

@Controller
@RequestMapping("/testUpload")
public class SpringMVCUpload {
    @RequestMapping("uploadFile")
    public String uploadFile(HttpServletRequest request)throws Exception {
        Map<String, String[]> parameterMap = request.getParameterMap();
        if(parameterMap!=null){
            Set<Entry<String, String[]>> entrySet = parameterMap.entrySet();
            if(entrySet!=null){
                Iterator<Entry<String, String[]>> iterator = entrySet.iterator();
                while (iterator.hasNext()) {
                    Map.Entry<String, String[]> entry = (Map.Entry<String, String[]>) iterator.next();
                    String key = entry.getKey();
                    System.out.println("key="+key);
                    String[] values = entry.getValue();
                    System.out.println("value="+Arrays.toString(values));
                }
            }
        }
        File uploadedFolderFile=new File("E:/upload");
        if(!uploadedFolderFile.exists()){
            uploadedFolderFile.mkdirs();
        }
        ServletContext servletContext=request.getSession().getServletContext();
        CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(servletContext);
        if (multipartResolver.isMultipart(request)) {
            MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
            Iterator<String> iterator = multiRequest.getFileNames();
            while (iterator.hasNext()) {
                MultipartFile multipartFile = multiRequest.getFile(iterator.next());
                if (multipartFile != null) {
                    String parentPath=uploadedFolderFile.getAbsolutePath()+File.separator;
                    String originalFilename = multipartFile.getOriginalFilename();
                    String path = parentPath + originalFilename;
                    File file=new File(path);
                    multipartFile.transferTo(file);
                }
            }
        }
        return "/test";
    }


}

部署测试

这里写图片描述

选择图片后,点击upload上传。

嗯哼,现在来瞅瞅传到服务端的图片

这里写图片描述

OK!

2
0
查看评论

SpringMVC札集(09)——拦截器

SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。在此,以示例的方式讲解拦截器的处理。
  • lfdfhl
  • lfdfhl
  • 2017-08-01 16:04
  • 989

SpringMVC札集(07)——JSON数据

有时浏览器发送给服务器的请求数据是JSON格式;有时服务器返回给浏览器的数据是JSON格式。那么,SpringMVC是怎么支持JSON格式的呢?在SpringMVC可用@RequestBody和@ResponseBody这两个注解来处理JSON数据。 @RequestBody注解用于读取http请...
  • lfdfhl
  • lfdfhl
  • 2017-07-30 22:10
  • 1068

SpringMVC札集(04)——SpringMVC传递参数

在本篇博客中主要讲述jsp页面向SpringMVC传递参数,例如:int,String,对象,包装类型,数组,List,Map。为清楚阐述每种类型的变量传递,故针对每种类型参数的传递都单独写了对应的测试方法且在代码明确注释。
  • lfdfhl
  • lfdfhl
  • 2017-07-30 14:11
  • 964

SpringMVC札集(06)——转发和重定向

SpringMVC的转发与重定向
  • lfdfhl
  • lfdfhl
  • 2017-07-30 16:26
  • 949

SpringMVC札集(10)——SSM框架整合

之前我们学习了Mybatis和SpringMVC,现在我们将它们与Spring进行整合,搭建起SSM框架
  • lfdfhl
  • lfdfhl
  • 2017-08-05 20:01
  • 1197

【SpringMVC学习08】SpringMVC中实现文件上传

之前有写过一篇struts2实现的文件上传,这一篇博文主要来总结下springmvc实现文件上传的步骤。首先来看一下单个文件的上传,然后再来总结下多个文件上传。 1. 环境准备   springmvc上传文件的功能需要两个jar包的支持(点我下载),如下 2. 单个文件的上传 2.1 前...
  • eson_15
  • eson_15
  • 2016-06-24 20:56
  • 9358

SpringMVC札集(01)——SpringMVC入门完整详细示例(上)

几年前写过一些后台,当时见得最多的就是SSH(Spring + Struts + Hibernate)。现在重新回到这里的时候发现大家谈论得更多不再是SSH的使用及其源码剖析;反而是关于它的弊端,比如Hibernate的过度设计和Struts的安全漏洞。在一些中小项目中,人们更多的去选用SSM(Sp...
  • lfdfhl
  • lfdfhl
  • 2017-07-25 09:54
  • 1123

2008年春晚视频锦集大全 在綫观看

<!-- google_ad_client = "pub-6067137220025946";google_ad_width = 300;google_ad_height = 250;google_ad_format = "300x250_as";go...
  • Kinb_huangwei
  • Kinb_huangwei
  • 2008-02-08 11:41
  • 641

SpringMVC札集(05)——SpringMVC参数回显

在上一篇博客中,我们从index.jsp传递参数到Controller中;Controller收到参数后再跳转到test.jsp。即执行流程为:index.jsp ---> Controller ---> test.jsp。现在我们可以把这些来自index.jsp的参数显示到test.j...
  • lfdfhl
  • lfdfhl
  • 2017-07-30 15:25
  • 892

SpringMVC札集(02)——SpringMVC入门完整详细示例(下)

在上一篇中,我们完成了一个SpringMVC的HelloWorld。在这个示例中我们使用的系统默认的HandlerMapping和HandlerAdapter即BeanNameUrlHandlerMapping和SimpleUrlHandlerMapping。在本篇博客中我们再来瞅瞅其他的Handl...
  • lfdfhl
  • lfdfhl
  • 2017-07-26 15:34
  • 917
    个人资料
    • 访问:1943531次
    • 积分:27792
    • 等级:
    • 排名:第234名
    • 原创:819篇
    • 转载:0篇
    • 译文:1篇
    • 评论:1296条
    博客专栏
    开发交流


    为方便大家学习和交流Android开发,建了个群,欢迎大家加入。

    QQ群: 183899857(已满)
    QQ群: 250468947(新开)

    文章分类