一、通过commons-fileupload来实现。导入jar包
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
二、配置Spring MVC的配置文件
<!-- 文件上传配置 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置编码格式 -->
<property name="defaultEncoding" value="utf-8"></property>
<!-- 设置文件大小 -->
<property name="maxUploadSize" value="10485760000"></property>
<!-- 设置缓冲区大小 -->
<property name="maxInMemorySize" value="40960"></property>
</bean>
三、JSP页面
<form action="upload.do"
method="post"
enctype="multipart/form-data">
file:<input name="file" type="file" />
<input type="submit" value="上传" />
</form>
四、Controller代码
@RequestMapping(value = "/upload")
public String fileupload(@RequestParam("file") CommonsMultipartFile file, HttpServletRequest request)
throws IOException {
//获取文件名
String fileName = file.getOriginalFilename();
//获取上传文件的路径
//String path = request.getRealPath("/fileupload");
String path = request.getServletContext().getRealPath("/fileupload");
InputStream is = file.getInputStream();
OutputStream os = new FileOutputStream(new File(path, fileName));
int len = 0;
byte[] buffer = new byte[400];
while((len = is.read(buffer)) != -1) {
//每次都是从buffer内存处的0偏移开始写,每次写len字节
os.write(buffer, 0, len);
}
os.close();
is.close();
System.out.println(path);//用来查看文件所在路径
System.out.println(file.getOriginalFilename());
return "/index.jsp";
}
五、批量上传
JSP页面:
<form action="upload.do" method="post" enctype="multipart/form-data">
file1:<input name="files" type="file" /><br>
file2:<input name="files" type="file" /><br>
<input type="submit" value="上传" />
</form>
Controller代码:
@RequestMapping(value = "/upload")
public String fileupload(@RequestParam("files")
CommonsMultipartFile[] files, HttpServletRequest request)
throws IOException {
for(CommonsMultipartFile file : files) {
//判断到底是由file==null还是由file.getOriginalFilename()==""引起的单个文件上传出错
System.out.println(file+":"+file.getOriginalFilename());
//解决file.getOriginalFilename()==""会引起单个文件上传出错
if(file.getOriginalFilename() == "") {
continue;
}
//获取文件名
String fileName = file.getOriginalFilename();
//获取上传文件的路径
//String path = request.getRealPath("/fileupload");
String path = request.getServletContext().getRealPath("/fileupload");
InputStream is = file.getInputStream();
OutputStream os = new FileOutputStream(new File(path, fileName));
int len = 0;
byte[] buffer = new byte[400];
while((len = is.read(buffer)) != -1) {
//每次都是从buffer内存处的0偏移开始写,每次写len字节
os.write(buffer, 0, len);
}
os.close();
is.close();
}
本文介绍如何使用SpringMVC框架配合commons-fileupload组件实现单文件和多文件上传功能,包括配置文件、JSP页面和Controller代码的具体实现。
995

被折叠的 条评论
为什么被折叠?



