SpringMVC上传文件总结
- 如果是maven项目 需要在pom.xml文件里面引入下面两个jar包
- <dependency>
- <groupId>commons-fileupload</groupId>
- <artifactId>commons-fileupload</artifactId>
- <version>1.3.1</version>
- </dependency>
- <dependency>
- <groupId>commons-io</groupId>
- <artifactId>commons-io</artifactId>
- <version>2.0.1</version>
- </dependency>
版本可以选择最新的版本。
如果不是,需要手动添加jar包的话,需要导入下面两个jar包:
1、commons-fileupload-1.2.2.jar
2、commons-io-2.0.1.jar
jar包引入后,我们接下来需要去配置一下配置文件,在配置文件里面加入下面内容:
- <!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
- <bean id="multipartResolver"
- class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
- <property name="defaultEncoding" value="UTF-8" />
- <!-- 指定所上传文件的总大小不能超过200KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
- <property name="maxUploadSize" value="-1" />
- </bean>
- <!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException -->
- <!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 -->
- <bean id="exceptionResolver"
- class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
- <property name="exceptionMappings">
- <props>
- <!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到XXX页面 -->
- <prop
- key="org.springframework.web.multipart.MaxUploadSizeExceededException">跳转XXX页面</prop>
- </props>
- </property>
- </bean>
接下来是上传页面jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%
- String path = request.getContextPath();
- String basePath = request.getScheme() + "://"
- + request.getServerName() + ":" + request.getServerPort()
- + path + "/";
- %>
- <!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>上传文件</title>
- </head>
- <body>
- <form action="<%=basePath%>upload.do" method="post"
- enctype="multipart/form-data">
- 上传文件:<input type="file" name="uploadfile">(如果是多文件可以继续添加多个file类型的input)
- <input type="submit" value="上传">
- </form>
- </body>
- </html>
Java类处理file
- package lcw.controller;
- import java.io.File;
- import java.io.IOException;
- import javax.servlet.http.HttpServletRequest;
- import org.apache.commons.io.FileUtils;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.multipart.commons.CommonsMultipartFile;
- /**
- *
- * 文件上传处理类
- *
- */
- @Controller
- public class FileController {
- //单文件上传
- @RequestMapping(value = "/upload.do")
- public String queryFileData(
- @RequestParam("uploadfile") CommonsMultipartFile file,
- HttpServletRequest request) {
- // MultipartFile是对当前上传的文件的封装,当要同时上传多个文件时,可以给定多个MultipartFile参数(数组)
- if (!file.isEmpty()) {
- String type = file.getOriginalFilename().substring(
- file.getOriginalFilename().indexOf("."));// 取文件格式后缀名
- String filename = System.currentTimeMillis() + type;// 取当前时间戳作为文件名
- String path = request.getSession().getServletContext()
- .getRealPath("/upload/" + filename);// 存放位置
- File destFile = new File(path);
- try {
- // FileUtils.copyInputStreamToFile()这个方法里对IO进行了自动操作,不需要额外的再去关闭IO流
- FileUtils
- .copyInputStreamToFile(file.getInputStream(), destFile);// 复制临时文件到指定目录下
- } catch (IOException e) {
- e.printStackTrace();
- }
- return "redirect:upload_ok.jsp";
- } else {
- return "redirect:upload_error.jsp";
- }
- }
- }
如果是多文件的话,原理和上面相同,但是接收参数我们是用的CommonsMultipartFile数组
- package lcw.controller;
- import java.io.File;
- import java.io.IOException;
- import javax.servlet.http.HttpServletRequest;
- import org.apache.commons.io.FileUtils;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.multipart.commons.CommonsMultipartFile;
- /**
- *
- * 文件上传处理类
- *
- */
- @Controller
- public class FileController {
- //单文件上传
- @RequestMapping(value = "/upload.do")
- public String queryFileData(
- @RequestParam("uploadfile") CommonsMultipartFile file,
- HttpServletRequest request) {
- // MultipartFile是对当前上传的文件的封装,当要同时上传多个文件时,可以给定多个MultipartFile参数(数组)
- if (!file.isEmpty()) {
- String type = file.getOriginalFilename().substring(
- file.getOriginalFilename().indexOf("."));// 取文件格式后缀名
- String filename = System.currentTimeMillis() + type;// 取当前时间戳作为文件名
- String path = request.getSession().getServletContext()
- .getRealPath("/upload/" + filename);// 存放位置
- File destFile = new File(path);
- try {
- // FileUtils.copyInputStreamToFile()这个方法里对IO进行了自动操作,不需要额外的再去关闭IO流
- FileUtils
- .copyInputStreamToFile(file.getInputStream(), destFile);// 复制临时文件到指定目录下
- } catch (IOException e) {
- e.printStackTrace();
- }
- return "redirect:upload_ok.jsp";
- } else {
- return "redirect:upload_error.jsp";
- }
- }
- //多文件上传
- @RequestMapping(value = "/uploads.do")
- public String queryFileDatas(
- @RequestParam("uploadfile") CommonsMultipartFile[] files,
- HttpServletRequest request) {
- if (files != null) {
- for (int i = 0; i < files.length; i++) {
- String type = files[i].getOriginalFilename().substring(
- files[i].getOriginalFilename().indexOf("."));// 取文件格式后缀名
- String filename = System.currentTimeMillis() + type;// 取当前时间戳作为文件名
- String path = request.getSession().getServletContext()
- .getRealPath("/upload/" + filename);// 存放位置
- File destFile = new File(path);
- try {
- FileUtils.copyInputStreamToFile(files[i].getInputStream(),
- destFile);// 复制临时文件到指定目录下
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return "redirect:upload_ok.jsp";
- } else {
- return "redirect:upload_error.jsp";
- }
- }
- }
SpringMVC上传文件总结的更多相关文章
- springmvc上传文件,抄别人的
SpringMVC中的文件上传 分类: SpringMVC 2012-05-17 12:55 26426人阅读 评论(13) 收藏 举报 stringuserinputclassencoding 这是 ...
- 2. SpringMVC 上传文件操作
1.创建java web项目:SpringMVCUploadDownFile 2.在项目的WebRoot下的WEB-INF的lib包下添加如下jar文件 com.springsource.com.mc ...
- 使用springMVC上传文件
control层实现功能: @RequestMapping(value="upload2") public String upLoad2(HttpServletRequest re ...
- SpringMVC上传文件(图片)并保存到本地
SpringMVC上传文件(图片)并保存到本地 小记一波~ 基本的MVC配置就不展示了,这里给出核心代码 在spring-mvc的配置文件中写入如下配置 <bean id="multi ...
- SpringMVC 上传文件 MultipartFile 转为 File
在使用 SpringMVC 上传文件时,接收到的文件格式为 MultipartFile,但是在很多场景下使用都需要File格式的文件,记录下以便日后使用. 以下mFile为MultipartFile文 ...
- springmvc 上传文件时的错误
使用springmvc上传文件一直失败,文件参数一直为null, 原来是配置文件没写成功. <bean id="multipartResolver" class=" ...
- SpringMVC上传文件的三种方式(转)
直接上代码吧,大伙一看便知 这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/common ...
- SpringMVC上传文件的三种方式
直接上代码吧,大伙一看便知 这时:commonsmultipartresolver 的源码,可以研究一下 http://www.verysource.com/code/2337329_1/common ...
- SpringMVC上传文件
SpringMVC中上传文件还是比较方便的,Spring内置了一些上传文件的支持类,不需要复杂的操作即可上传文件. 文件上传需要两个jar支持,一个是commons-fileupload.jar和co ...
随机推荐
- [深度学习] 各种下载深度学习数据集方法(In python)
一.使用urllib下载cifar-10数据集,并读取再存为图片(TensorFlow v1.14.0) # -*- coding:utf-8 -*- __author__ = 'Leo.Z' imp ...
- head first 设计模式笔记5-单例模式
目录: 1.单例模式(Singleton Pattern) 2.概念 3.饿汉式:不是延迟加载,加载类的时候直接初始化 4.懒汉式:延迟加载,首次需要使用的时候在实例化,需要考虑线程安全 5.静态内部 ...
- wx.setStorage、wx.getStorage和wx.getStorageSync
Page({ data: { testnum:""//设置测试参数 }, test:function(){ var Num = this.data.testnum; wx.setS ...
- Spring boot之热部署
springboot热部署 1.springloaded(热部署) 2.devtools(热部署) 一.springloaded 问题的提出: 在编写代码的时候,你会发现我们只是简单把打印信息改变了, ...
- LeetCode19----删除链表的指定元素
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 ...
- 第八周课程总结 & 实验报告(六)
第八周课程总结 一.包装类 介绍 装箱与拆箱 应用 二.异常 基本概念 基本格式 异常类的继承结构 throws关键字 throw关键字 Exception类和RuntimeException类 自定 ...
- 使用OMF特性
Oracle 的OMF全称"Oracle managed file",关于这个概念的参考请自行查阅Oracle官方文档"Using Oracle-Managed File ...
- javascript - 事件详解(阻止事件冒泡+阻止事件行为)
一.事件流 1.事件流 描述的是在页面中接受事件的顺序 2.事件冒泡 由最具体的元素接收,然后逐级向上传播至最不具体的元素的节点 (最具体 –> 最不具体) 3.事件捕获 最不具体的节点先接收事 ...
- 11G 新特性之 密码延迟认证
11G 新特性之 密码延迟认证 11G 新特性之 密码延迟认证 Table of Contents 1. 特性简述 2. 特性潜在引发问题 3. 关闭特性 1 特性简述 为了防止用户密码的暴力破解,从 ...
- jenkisn Pipeline的流水线发布,自动化部署
创建一个流水线job,这只是个简单的流水线发布教程,写的不好~