SSM框架实现图片上传到工程目录下的upload文件夹与图片回显

有任何问题加群讨论

群号:733899823

加群时请备注CSDN~

还可以关注我的个人微信公众号,免费领取Java全栈学习资料呦~

SSM框架实现图片上传到工程目录下的upload文件夹与图片回显_第1张图片

一、工程目录如下:

SSM框架实现图片上传到工程目录下的upload文件夹与图片回显_第2张图片

二、上传测试页面-register.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




上传图片测试



	
用户名:
图片:

三、上传与回显测试的Controller-UserController.java:

package com.xiao.controller;

import java.io.File;
import java.util.List;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.io.FilenameUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import com.xiao.pojo.User;
import com.xiao.service.UserService;

@Controller
public class UserController {
	
	@Autowired
	private UserService userService;
	
	
	@RequestMapping(value = "/addUser")
	public String addUser(HttpServletRequest request ,User user,MultipartFile pictureFile) throws Exception{
		
		//使用UUID给图片重命名,并去掉四个“-”
		String name = UUID.randomUUID().toString().replaceAll("-", "");
		//获取文件的扩展名
		String ext = FilenameUtils.getExtension(pictureFile.getOriginalFilename());
		//设置图片上传路径
		String url = request.getSession().getServletContext().getRealPath("/upload");
		System.out.println(url);
		//以绝对路径保存重名命后的图片
		pictureFile.transferTo(new File(url+"/"+name + "." + ext));
		//把图片存储路径保存到数据库
		user.setImageURL("upload/"+name + "." + ext);
		
		userService.addUser(user);
		//重定向到查询所有用户的Controller,测试图片回显
		return "redirect:/getAll";
		
	}
	//查询所有用户
	@RequestMapping(value = "/getAll")
	public String getAll(Model model) throws Exception{
		List userList = userService.getAll();
		model.addAttribute("userList",userList);
		return "userList";
	}

}

以上url的打印地址为:C:\Users\Administrator\Desktop\Test\Test\src\main\webapp\upload,路径最后少了个斜杠,所以,我在pictureFile.transferTo(new File(url+"/"+name + "." + ext));  这句代码中拼接了一个“/”,这样文件才会上传到upload文件夹中

保存到数据库的地址为:upload/UUID生成的文件名.jpg

另外还得注意一点:图片提交input输入框的name属性值要与Controller中MultipartFile接口所声明的形参名一致,不然需要用@RequestParam注解绑定

四、由于我的前端控制器配置的是拦截所有请求,所以要在在springmvc.xml中放行静态资源:

五、在springmvc.xml中还需配置文件上传解析器:


	
		
		
		
		
	

六、回显测试页面-userList.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>




测试图片回显



	${userList.username}







七、效果演示:

SSM框架实现图片上传到工程目录下的upload文件夹与图片回显_第3张图片

SSM框架实现图片上传到工程目录下的upload文件夹与图片回显_第4张图片

 

数据库表:

 

SSM框架实现图片上传到工程目录下的upload文件夹与图片回显_第5张图片

说明

如果上述方法获取的路径不对,可以试试如下方法:

 File directory = new File("");// 参数为空
 String workspacePath = directory.getCanonicalPath(); //获取工作空间的绝对路径
 System.out.println(workspacePath);
 String uploadDicPath = "\\src\\main\\webapp\\upload\\"; //手动添加上传文件夹的路径
 String uploadPath = workspacePath + uploadDicPath; //最终图片上传的路径
 System.out.println(uploadPath);

 

你可能感兴趣的:(SSM,ssm,upload,图片上传,图片回显,springmvc)