springmvc实现文件上传
springmvc实现文件上传
多数文件上传都是通过表单形式提交给后台服务器的,因此,要实现文件上传功能,就需要提供一个文件上传的表单,而该表单就要满足以下3个条件
(1)form表彰的method属性必须设置为post提交
(2)form表单的enctype属性设置为multipart/form-data
(3) 提供<input type="file" name ="filename" />的文件上传输入框
文件上传表单的示例代码如下:
<form action="/fileUpload.do" method="post"
enctype="multipart/form-data">
上传人:<input id="name" type="text" name="name" />
<br />
请选择文件:<inputid="file" type="file" name="filename" multiple="multiple" />
<br />
<input type="submit" value="上传" />
</form>
其中的 multiple="multiple" 可以实现多文件上传
还需要要springmvc.xml文件中配置文件上传解析器
<!--配置文件上传解析器 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置请求编码格式,必须与JSP中的pageEncoding属性一致,默认为iso-8859-1 -->
<property name="defaultEncoding" value="UTF-8" />
<!-- 设置允许上传文件的最大值(2MB) ,单位为字节 -->
<property name="maxUploadSize" value="2097152"></property>
</bean>
下面通过一个例子来说明
一个web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>testupload</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list> <!--配置前端控制器-->
<servlet>
<servlet-name>upload</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>upload</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
一个springmvc.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 扫描的Controller包 -->
<context:component-scan base-package="cn.lzc.upload.controller" />
<!--配置注解驱动 -->
<mvc:annotation-driven />
<!--配置视图解析器 -->
<bean id="internalResourceViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
<!--配置文件上传解析器 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- 设置请求编码格式,必须与JSP中的pageEncoding属性一致,默认为iso-8859-1 -->
<property name="defaultEncoding" value="UTF-8" />
<!-- 设置允许上传文件的最大值(2MB) ,单位为字节 -->
<property name="maxUploadSize" value="2097152"></property>
</bean>
</beans>
页面fileUpload.jsp文件
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传</title>
<script>
// 判断是否填写上传人并已选择上传文件
function check(){
var name = document.getElementById("name").value;
var file = document.getElementById("file").value;
if(name==""){
alert("填写上传人");
return false;
}
if(file.length==0||file==""){
alert("请选择上传文件");
return false;
}
return true;
}
</script>
</head>
<body>
<form action="${pageContext.request.contextPath }/fileUpload.do"
method="post" enctype="multipart/form-data" onsubmit="return check()">
上传人:<input id="name" type="text" name="name" /><br />
请选择文件:<input id="file" type="file" name="uploadfile"
multiple="multiple" /><br />
<input type="submit" value="上传" />
</form>
</body>
</html>
一个FileUploadController.class文件
package cn.lzc.upload.controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.List;
import java.util.UUID; /**
* 文件上传Controller
*/
@Controller
public class FileUploadController {
/**
* 文件上传的方法
*/
@RequestMapping("/fileUpload.do")
public String handleFormUpload(@RequestParam("name")String name,
@RequestParam("uploadfile")
List<MultipartFile> uploadfile, HttpServletRequest request) {
//判断所上传文件是否存在
if (!uploadfile.isEmpty() && uploadfile.size() > 0) {
//循环输出上传的文件
for (MultipartFile file : uploadfile) {
//获取上传文件原始名称
String originalFilename = file.getOriginalFilename();
//设置上传文件的保存地址目录
String savePath = request.getServletContext().getRealPath("/upload/");
File filePath = new File(savePath);
//如果文件的地址不存在,就创建一个目录
if (!filePath.exists()) {
filePath.mkdirs();
}
//使用UUID重样命名上传的文件名称
String newFileName = name + "_" + UUID.randomUUID() + "_" + originalFilename;
try {
//使用MultipartFile接口的方法寒碜文件上传到指定位置
file.transferTo(new File(savePath + newFileName));
} catch (Exception e) {
e.printStackTrace();
return "error";
}
}
//跳转到成功页面
return "success";
} else {
return "error";
}
}
}
正确提交页面 succeess.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
文件上传成功!
</body>
</html>
错误页面error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
文件上传失败,请重新上传!
</body>
</html>
按过程来就可以了
springmvc实现文件上传的更多相关文章
- springmvc图片文件上传接口
springmvc图片文件上传 用MultipartFile文件方式传输 Controller package com.controller; import java.awt.image.Buffer ...
- SpringMVC学习--文件上传
简介 文件上传是web开发中常见的需求之一,springMVC将文件上传进行了集成,可以方便快捷的进行开发. springmvc中对多部件类型解析 在 页面form中提交enctype="m ...
- Spring +SpringMVC 实现文件上传功能。。。
要实现Spring +SpringMVC 实现文件上传功能. 第一步:下载 第二步: 新建一个web项目导入Spring 和SpringMVC的jar包(在MyEclipse里有自动生成spring ...
- SpringMVC之文件上传异常处理
一般情况下,对上传的文件会进行大小的限制.如果超过指定大小时会抛出异常,一般会对异常进行捕获并友好的显示出来.以下用SpringMVC之文件上传进行完善. 首先配置CommonsMultipartRe ...
- 【SpringMVC】文件上传Expected MultipartHttpServletRequest: is a MultipartResolver错误解决
本文转载自:https://blog.csdn.net/lzgs_4/article/details/50465617 使用SpringMVC实现文件上传时,后台使用了 MultipartFile类, ...
- 关于SpringMVC的文件上传
关于文件的上传,之前写过2篇文章,基于Struts2框架,下面给出文章链接: <关于Struts2的文件上传>:http://www.cnblogs.com/lichenwei/p/392 ...
- 一起学SpringMVC之文件上传
概述 在Web系统开发过程中,文件上传是普遍的功能,本文主要以一个简单的小例子,讲解SpringMVC中文件上传的使用方法,仅供学习分享使用,如有不足之处,还请指正. 文件上传依赖包 如下所示,文件上 ...
- SpringMVC+ajax文件上传实例教程
原文地址:https://blog.csdn.net/weixin_41092717/article/details/81080152 文件上传文件上传是项目开发中最常见的功能.为了能上传文件,必须将 ...
- 6.学习springmvc的文件上传
一.文件上传前提与原理分析 1.文件上传必要前提: 2.文件上传原理分析: 3.需要引入的jar包: 二.传统方式文件上传程序 1.pom.xml <dependency> <gro ...
随机推荐
- WPF 4.5 is here : check out the new features !
So what's New in WPF Version 4.5 Developer Preview ? Here is a list of the new features and their re ...
- PHP最全笔记(二)(值得收藏,不时翻看一下)
/* [goto]5.3+ 版本 */用来跳转到程序中的某一指定位置该目标位置可以用目标名称 加上冒号来标记.PHP中的goto有一定限制,只能在同一个文件和作用域中跳转, 也就是说你无法跳出一 ...
- [UI] 02 - Layout & CSS3
开胃小菜 一.纯CSS布局 UI效果 From: 创建一个没有表格的网页 代码详情 <!DOCTYPE html> <html> <head> <meta c ...
- OSG描边特效osgFX::Outline的修改
对一个三维场景中的物体实现描边特效,可以参考osg范例osgoutline 这个描边特效使用了模板缓存Stencil来实现,参见源代码osgFX/Outline.cpp 使用了两个Pass 第一个Pa ...
- 实现调用Android手机的拍照功能
很简单,直接上示例吧 1 xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...
- 如何用Baas快速在腾讯云上开发小程序-系列2:搭建Phabricator开发管理平台
版权声明:本文由贺嘉 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/905333001487424158 来源:腾云阁 h ...
- 6 CLR静态构造器
CLR保证一个类型构造器在每个AppDomain中只执行一次,而且这种执行是线程安全的. 作用: 就是初始化静态成员 比如有几个静态成员需要初始化那你把初始化代码放到哪呢? 放到普通构造函数里,那肯定 ...
- 适用于CentOS6.4的Win7双系统安装方式
(文章在2013-11-16 15:56:31修改,此次修改幅度较大,之前的安装方式有问题,已经不推荐使用.笔者在此对各位读者表示深深的歉意!) 在之前的文章中我们实现了Win7+CentOS6.3双 ...
- 中州韻输入法框架 ibus-rime 修改样式
一键命令移植 Gnome-Shell 主题 $ sudo su $ curl -LO https://github.com/lemos1235/Little-Utils/raw/master/gnom ...
- hadoop 使用ip配置导致hdfs启动失败
dataNode 有守护进行,但hdfs web页面上显示没有live node. 错误日志: 2017-06-21 17:44:59,513 ERROR org.apache.hadoop.hdfs ...