使用SpringMVC进行文件上传

文件上传是表现层常见的需求,在Spring MVC中底层使用Apache的Commons FileUpload工具来完成文件上传,对其进行封装,让开发者使用起来更加方便。接下来看看如何开发?

1 导入common-fileupload包

<!-- commons-fileUpload -->
<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3.1</version>
</dependency>

2 配置文件解析器

<!-- 配置文件上传解析器
 注意:必须配置id,且名称必须为multipartResolver
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 配置限制文件上传大小 (字节为单位)-->
    <property name="maxUploadSize" value="1024000"/>
</bean>

注意几个点:

  • 必须配置CommonsMultipartResolver解析器
  • 该解析器的id必须叫multipartResolver,否则无法成功接收文件
  • 可以通过maxUploadSize属性限制文件上传大小

3 设计文件上传表单

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>一点教程网-文件上传</title>
</head>
<body>
<h3>SpringMVC方式文件上传</h3>
<form action="/upload" method="post" enctype="multipart/form-data">
    选择文件:<input type="file" name="imgFile"> <br/>
    文件描述:<input type="text" name="memo"> <br/>
    <input type="submit" value="上传">
</form>
</body>
</html>

上传表单注意以下几点:

表单的enctype必须改为multipart/form-data 表单提交方式必须为POST,不能是GET

4 编写控制器接收文件及参数

package com.yiidian.controller;
import com.yiidian.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 *  演示Spring MVC文件上传
 * 一点教程网 - www.yiidian.com
 */
@Controller
public class UploadController {

    /**
     * 接收文件
     */
    @RequestMapping("/upload")
    public String upload(HttpServletRequest request, MultipartFile imgFile,String memo){
        //1.获取网站的upload目录的路径: ServletContext对象
        String upload = request.getSession().getServletContext().getRealPath("/upload");

        //判断该目录是否存在,不存在,自己创建
        File uploadFile = new File(upload);
        if(!uploadFile.exists()){
            uploadFile.mkdir();
        }

        //把文件保存到upload目录

        //2.生成随机文件名称
        //2.1 原来的文件名
        String oldName = imgFile.getOriginalFilename();

        //2.2 随机生成文件名
        String uuid = UUID.randomUUID().toString();
        //2.3 获取文件后缀
        String extName = oldName.substring(oldName.lastIndexOf(".")); //.jpg

        //2.4 最终的文件名
        String fileName = uuid+extName;

        //3.保存
        try {
            imgFile.transferTo(new File(upload+"/"+fileName));
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("文件描述:"+memo);

        return "success";

    }
}

注意:这里使用MultipartFile对象接收文件,并把文件存放在项目的upload目录下,同时还接收了普通参数。

5 运行测试

检查项目的target目录,是否有文件

控制台输出参数内容:

来源:站长平台

原文地址:https://www.cnblogs.com/1994july/p/12411993.html

时间: 2024-11-08 10:22:40

使用SpringMVC进行文件上传的相关文章

SpringMVC中文件上传的客户端验证

SpringMVC中文件上传的客户端验证 客户端验证主要思想:在jsp页面中利用javascript进行对文件的判断,完成验证后允许上传 验证步骤:1.文件名称 2.获取文件的后缀名称 3.判断哪些文件类型允许上传 4.判断文件大小 5.满足条件后跳转后台实现上传 前台界面(验证上传文件是否格式满足要求): <body> <h2>文件上传</h2> <form action="upload01" method="post" 

SpringMVC单文件上传

最近在看SpringMVC的文件上传部分,其实大多数系统都要涉及到文件上传,以前对于Struts的文件上传功能也做过总结了,今天主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤. 一.设置配置文件: SpringMVC 用的是 的MultipartFile来进行文件上传 所以我们首先要配置MultipartResolver:用于处理表单中的file [html] view plaincopyprint? <!-- 配置MultipartResolver 用于文

Spring Framework源码(十):SpringMVC之文件上传

我们这一章讲SpringMVC中文件上传的应用,首先我们还是从DispatcherServlet这个核心分发器开始讲起: processedRequest = checkMultipart(request); 还记得上一章讲doDispatch这个方法时见过的方法吧?现在我们来分析下这个方法的具体解析过程: protected HttpServletRequest checkMultipart(HttpServletRequest request) throws MultipartExcepti

关于SpringMVC的文件上传

关于文件的上传,之前写过2篇文章,基于Struts2框架,下面给出文章链接: <关于Struts2的文件上传>:http://www.cnblogs.com/lichenwei/p/3927964.html <关于Struts2的多文件上传>:http://www.cnblogs.com/lichenwei/p/3928200.html 其实文件上传的原理都是一样的,基于SpringMVC的文件上传实现要比Struts2要来得简单许多. 好了,废话不多说,直接切入主题吧,关于上传原

SpringMVC经典系列-12基于SpringMVC的文件上传---【LinusZhu】

注意:此文章是个人原创,希望有转载需要的朋友们标明文章出处,如果各位朋友们觉得写的还好,就给个赞哈,你的鼓励是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系[email protected],敬请朋友们斧正,谢谢. 不知不觉已经把Spring的基础部分讲解完了,所讲述的都是在项目中经常用到的东西,是经得住考验的,接下来的部分主要是要讲述使用SpringMVC进行的文件上传.处理Ajax请求.自定义拦截器功能的实现,不多说了,首先讲解文件上传部分,开始--     

SpringMVC学习--文件上传

简介 文件上传是web开发中常见的需求之一,springMVC将文件上传进行了集成,可以方便快捷的进行开发. springmvc中对多部件类型解析 在 页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析.在springmvc.xml中配置multipart类型解析器. 1 <!-- 文件上传 --> 2 <bean id="multipartResolver&qu

SpringMVC多文件上传实例

后台Conroller import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.util.Date;

Extjs4 + springMVC的文件上传

用springMVC来做项目,如果遇到文件上传,那么一定要用spring自带的文件处理类来处理上传的文件,因为效率实在高过其他的. 从界面传过来的参数,如果设置了值对象,那么可以从值对象里面取出字符串类型的普通参数,如果不这样做,也可以直接从request里面获得,两种方法都可以. 问题是如果值对象里面写了其他类型的变量,妄想像Struts2那样处理,springMVC就会报出400 Bad Request的错误. 在Struts2里面,我们可以定义一个值对象为 public class Ima

springmvc RestTemplate文件上传

在使用springmvc提供rest接口实现文件上传时,有时为了测试需要使用RestTemplate进行调用,那么在使用RestTemplate调用文件上传接口时有什么特别的地方呢?实际上只需要注意一点就行了,就是创建文件资源时需要使用org.springframework.core.io.FileSystemResource类,而不能直接使用java.io.File对象. Controller中的rest接口代码如下: @ResponseBody @RequestMapping(value =

SSM框架-SpringMVC 实例文件上传下载

SSM框架-SpringMVC 实例文件上传下载 2017-04-17 09:38 4497人阅读 评论(6) 收藏 举报  分类: java基础(3)  目录(?)[+] 目录(?)[+] 林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传.多文件上传.文件列表显示.文件下载. 本文工程免费下载 一.新建一个Web工程,导入相关的包 springmvc的包+commons-fileupload