SSM完成文件上传的DEMO:
希望可以在朋友们有需求的时候帮助一下你们,废话不说,上Demo
注意,改操作需要依赖两个jar包,放上包名,可以自己找一下
1.commons-io-2.4.jar
2.commons-fileupload-1.3.1.jar
在springmvc中的文件配置信息
<!-- 文件上传的解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"></property>
<property name="maxUploadSize" value="10485760"></property>
</bean>
控制层代码。基本注释都有了
package com.bw.controller;
import java.io.File;
import java.io.IOException;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
@Controller
@RequestMapping("/image")
public class ImageController {
@RequestMapping("/toReg")
public String toReg(){
return "reg";
}
@RequestMapping("/upload")
public String uploadImg(HttpServletRequest rquest,MultipartFile headImg,String desc,Model model){
//得到文件名,用以检测是否传入
String oldName = headImg.getOriginalFilename();
System.out.println("原来的文件名:"+oldName);
System.out.println("文件的描述是:"+desc);
//分割,拼接文件路径所需
//文件后缀名
String suffix = oldName.substring(oldName.lastIndexOf("."));
//可能多个用户传入,为预防文件覆盖,使用UUID拼接新的文件名
String newName = UUID.randomUUID().toString()+suffix;
//获取物理路径,笨路径相当于项目根目录
String realPath = rquest.getServletContext().getRealPath("/static/upload");
System.out.println("新文件的绝对路径:"+realPath);
//创建文件目录及创建文件
File file = new File(realPath, newName);
try {
//使用springmvc的MultipartFile的transferTo方法将文件上传到服务器,使用该方法可以完成上传
//---小重点---
headImg.transferTo(file);
} catch (IOException e) {
e.printStackTrace();
}
model.addAttribute("imagePath", "static/upload/"+newName);
model.addAttribute("imageDesc",desc );
return "show";
}
}
两个JSP中的添加jsp ,div里面是样式,需要bootstrap的包进行配置,可以删除div效果是一样的,就是样式丑一点。。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../js/jquery-3.2.1.js"></script>
<link rel="stylesheet" href="../bootstrap-3.3.7-dist/css/bootstrap.min.css">
<script src="../bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../js/jquery.serialize.js"></script>
<script type="text/javascript">
</script>
<div class="container">
<div class="row" >
<div class="col-md-6 col-md-offset-3">
<h1>添加头像</h1>
<form action="http://localhost:8080/SSM/image/upload" method="post" enctype="multipart/form-data">
请输入图片描述: <input type="text" name="desc"><br>
请选择头像: <input type="file" accept="image/*" name="headImg"><br>
<input type="submit" class="btn btn-info">
</form>
</div>
</div>
</div>
</head>
<body>
</body>
</html>
另外一个jsp,展示负责展示
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="../js/jquery-3.2.1.js"></script>
<link rel="stylesheet" href="../bootstrap-3.3.7-dist/css/bootstrap.min.css">
<script src="../bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
<script type="text/javascript" src="../js/jquery.serialize.js"></script>
<script type="text/javascript">
</script>
<div class="container">
<div class="row" >
<div class="col-md-6 col-md-offset-3">
<h1>员工头像</h1>
<img title="${imageDesc}" src="${imagePath}">
</div>
</div>
</div>
</head>
<body>
</body>
</html>
最后说一下,这个DEMO是临时制作的,要用的话要结合开发的实际情况,但是重点都有了。。