1.导入上传所需的jar包,commons-io.jar、commons-fileupload.jar
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
2.编写页面,在form中添加 enctype="multipart/form-data"属性
<form action="testUpload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
描述:<input name="desc" type="text">
<input type="submit" value="上传">
</form>
3.配置CommonsMultipartResolver,文件上传解析器
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!-- 使@Controller和@RequestMapping注解生效 -->
<mvc:annotation-driven />
<!-- 扫描注解 -->
<context:component-scan base-package="com.ck.controller"/>
<!--
配置CommonsMultipartResolver,用于实现文件上传
Ioc容器在初始化的时候,会自动寻找一个id=multipartResolver的bean
-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 上传文件的最大值,单位Byte, -1表示无限值-->
<property name="maxUploadSize" value="102400"></property>
</bean>
4.controller处理请求
package com.ck.controller;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
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;
@Controller
public class Usercontroller02 {
@RequestMapping(value="/testUpload")
public String testUpload(@RequestParam("desc") String desc,@RequestParam("file") MultipartFile file) {
System.out.println("文件描述信息:" + desc);
InputStream is = null;
OutputStream out = null;
try {
//得到上传文件的流
is = file.getInputStream();
//上传文件名字
String fileName = file.getOriginalFilename();
//new一个输出流
out = new FileOutputStream(new File("D:\\" + fileName));
//文件流读写操作
byte[] bs = new byte[1024];
int len = 0;
while((len = is.read(bs)) != -1) {
out.write(bs, 0, len);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭输入输出流
if(is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return "index";
}
}