1. 文件的上传(ajax)
1.1 上传流程分析(头像上传案例)
1.需要新建虚拟路径!!!
2.Controoler做了两件事情:第一件事情把/upload/1.jpg 放到数据库中
第二件事情:必须把文件传入到本地磁盘的upoload文件夹中,因为这个文件夹就是虚拟路径
3.img标签的src的值,应该从数据库中取出来, 赋值给src属性
Src=”/upload/1.jpj” 虚拟路径 http:localhots:8080/upload/1.jpj
注:路径可根据自己喜欢定义
其实前四步和jsp上传都大体相同,熟悉的同学可直接去1.5
1.2 导入的jar包
所需jar包:
commons-fileupload-1.2.1.jar
commons-io-1.4.jar
导入方式如下,复制粘贴至pom.xml中
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
1.3 配置视图解析器
在spring-mvc中进行配置,限定图片上传的大小
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="1048576"></property>
</bean>
1.4 html中form表单的属性
注意配置以下属性:
method=”post”
enctype=”multipart/form-data”
注意:file控件的name属性值
配置效果如下所示:
<form action="upload" method="post" enctype="multipart/form-data">
<input type="text" name="uname"/><br/>
<input type="file" name="upfile"/><br/>
<input type="submit" value="submit"/>
</form>
1.5 jquery实现ajax文件上传
采用序列化进行文件的上传,需使用到一下js文件
注意事项:
<script src="js/jquery-1.12.2.min.js" type="text/javascript"></script>
<script src="js/jquery.form.min.js" type="text/javascript"></script>
上下位置不可换
<script src="js/jquery-1.12.2.min.js" type="text/javascript"></script>
<script src="js/jquery.form.min.js" type="text/javascript"></script>
<script>
$("form").submit(function () {
$("form").ajaxSubmit({
type:"post",
url:"user/upload",
dataType:"json",
data:$("form").serialize(),
success:function (data) {
alert(data.info);
}
})
})
</script>
1.6 控制器(controller层)实现
jackjson支持下:@ResponseBody
注意:
@RequestParam MultipartFile
@RequestMapping("/upload")
@ResponseBody
public JsonResult upload (@RequestParam MultipartFile upload, HttpSession session) {
String uploadName = System.currentTimeMillis() + upload.getOriginalFilename();
String dir = "E:/upload";
File file = new File(dir);
if (!file.exists()) {
file.mkdirs();
}
file = new File(dir, uploadName);
try {
upload.transferTo(file);
} catch (IOException e) {
e.printStackTrace();
}
User user = (User)session.getAttribute("user");
User edit = new User();
edit.setUid(user.getUid());
edit.setImgPath("/upload/" + uploadName);
userService.editImgPath(edit);
user.setImgPath("/upload/" + uploadName);
session.setAttribute("user",user);
return "(/"code/":1,/"info/":/"成功/")";
}