package com.zzxsoft.controller;
import java.io.File;
import java.util.Iterator;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.ModelAndView;
/*文件上传,FileUploadController类
* @ author
* **/
@Controller
@RequestMapping("/file")
public class FileUploadController {
@RequestMapping("/upload")
public ModelAndView upload(HttpServletRequest request) throws Exception {
// 将当前文件初始化给CommonsMutipartResolver (多部分解析器)
int count = 0;
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
// 检查表单中是否有 enctype="multipart/from-data"
if (multipartResolver.isMultipart(request)) {
// 将request变成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 获取multiRequest中所有的文件域中
Iterator iterator = multiRequest.getFileNames();
// 遍历所有文件域
while (iterator.hasNext()) {
// 判断是否有选择的文件
MultipartFile file = multiRequest.getFile(iterator.next().toString());
// 判断文件域中是否有选择的文件
if (file != null && file.getOriginalFilename() != "") {
// 路径是项目中服务器端的路径. file.getOriginalFilename()是文件名,包含后缀 .txt
String path = request.getSession().getServletContext().getRealPath("/fileUpload/")
+ file.getOriginalFilename();
System.out.println(path);
// 上传文件
file.transferTo(new File(path));
count++;
}
}
}
return new ModelAndView("fileUpload", "msg", "成功上传 " + count + " 个文件");
}
}
/*文件上传,.jsp页面
* @ author
* **/
SpringMVC-servlet.xml的配置
<!-- 文件上传 CommonsMultipartResolver-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置文件上传最大值,注意,这个值是所有文件的大小和 1024*1024*4 = 4 M -->
<property name="maxUploadSize" value="4194304"/>
<!-- 缓冲区大小 -->
<property name="maxInMemorySize" value="4096"/>
<!-- 设置上传时的字符编码 -->
<property name="defaultEncoding" value="utf-8"/>
</bean>
上传前的界面
上传时的界面
上传好返回时的界面