springmvc之multipart完成文件上传

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是临时制作的,要用的话要结合开发的实际情况,但是重点都有了。。

猜你喜欢

转载自blog.csdn.net/weixin_41868360/article/details/80753196