标签:
学习一个框架少不了学习文件上传
在使用springMVC进行系统实现时,springMVC默认的解析器里面是没有加入对文件上传的解析的,这可以方便我们实现自己的文件上传。但如果你想使用springMVC对文件上传的解析器来处理文件上传的时候就需要在spring的applicationContext里面加上springMVC提供的MultipartResolver的申明。这样之后,客户端每次进行请求的时候,springMVC都会检查request里面是否包含多媒体信息,如果包含了就会使用MultipartResolver进行解析,springMVC会使用一个支持文件处理的MultipartHttpServletRequest来包裹当前的HttpServletRequest,然后使用MultipartHttpServletRequest就可以对文件进行处理了。
文件上传需要额外引入包分别是
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="sf" uri="http://www.springframework.org/tags/form" %>
<html>
<head>
<meta charset="utf-8">
<title>用户登录</title>
</head>
<body>
<%--文件上传的话需要enctype="multipart/form-data"--%>
<sf:form modelAttribute="user" method="post" enctype="multipart/form-data">
用户名:<sf:input path="username"/><sf:errors path="username"/>
<br>
密码:<sf:input path="password"/><sf:errors path="password"/>
<br>
昵称:<sf:input path="nickname"/><sf:errors path="nickname"/>
<br>
<%--这里设置文件上传--%>
文件:<input type="file" name="file">
<input type="submit" value="提交">
</sf:form>
</body>
</html>
@RequestMapping(value = "/login",method = RequestMethod.POST)
public String login(@Validated User user, BindingResult br, Model model,@RequestParam("file") MultipartFile file){
if (br.hasErrors()){
return "user/login";
}
//分别获取的是变量名file---文件类型---文件名
System.out.println(file.getName()+"---"+file.getContentType()+"---"+file.getOriginalFilename());
try {
if (!file.isEmpty()){
//使用StreamsAPI方式拷贝文件
Streams.copy(file.getInputStream(),new FileOutputStream("E:/temp/"+file.getOriginalFilename()),true);
}
} catch (IOException e) {
System.out.println("文件上传失败");
e.printStackTrace();
}
System.out.println(user.toString());
return "user/login";
}
至此单个文件上传完成.
多文件上传很简单,只需要把参数改为数组就可以了
@RequestMapping(value = "/login",method = RequestMethod.POST)
public String login(@Validated User user, BindingResult br, Model model,@RequestParam("file") MultipartFile[] file){
if (br.hasErrors()){
return "user/login";
}
//这里对文件进行遍历
for (MultipartFile mul:file){
//分别获取的是变量名file---文件类型---文件名
System.out.println(mul.getName()+"---"+mul.getContentType()+"---"+mul.getOriginalFilename());
try {
if (!mul.isEmpty()){
Streams.copy(mul.getInputStream(),new FileOutputStream("E:/temp/"+mul.getOriginalFilename()),true);
}
} catch (IOException e) {
System.out.println("文件上传失败");
e.printStackTrace();
}
}
System.out.println(user.toString());
return "user/login";
}
标签:
原文地址:http://blog.csdn.net/u012706811/article/details/51059419