图片上传:
我们在开发WEB项目时必然要上传文件,所以我们以上传图片为例,做一次图片上传。上传图片有两种方式:1. 放到tomcat的临时目录下,重启一次就没有了。还有一个就是上传到绝对目录也就是本地计算机的存储目录,后期无论怎么重启都不会丢失。
上传到tomcat->temp:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
# #上传文件大小
#单个
spring.http.multipart.max-file-size=500Mb
#全部
spring.http.multipart.max-request-size=500Mb
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="/upload">
文件
<input type="file" name="file">
<input type="submit" value="上传">
</form>
</body>
</html>
package cn.org.easycoding.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.UUID;
/**
* Created by Guanzhong Hu
* Date :2020/2/8
* Description : 设置控制器
* Version :1.0
*/
@Controller
public class SettingController {
@ResponseBody
@RequestMapping(value = "/upload" ,method = RequestMethod.POST)
public String uploadfile(MultipartFile file, HttpServletRequest request){
try {
// 创建文件在服务器端存放路径
String dir = request.getServletContext().getRealPath("/upload");
// 如果没有文件则创建
File fileDir = new File(dir);
if (!fileDir.exists()) fileDir.mkdirs();
System.out.println(dir);
//原始名
String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
String fileName = UUID.randomUUID().toString()+fileSuffix;
File files = new File(fileDir+"/"+fileName);
file.transferTo(files);
}catch (Exception e){
return "上传失败";
}
return "上传成功!";
}
}
上传本地目录:
package cn.org.easycoding.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.UUID;
/**
* Created by Guanzhong Hu
* Date :2020/2/8
* Description : 设置控制器
* Version :1.0
*/
@Controller
public class SettingController {
@ResponseBody
@RequestMapping(value = "/upload" ,method = RequestMethod.POST)
public String uploadfile(MultipartFile file, HttpServletRequest request){
try {
// 创建文件在服务器端存放路径
String dir = "d://imgs/";
// 如果没有文件则创建
File fileDir = new File(dir);
if (!fileDir.exists()) fileDir.mkdirs();
System.out.println(dir);
//原始名
String fileSuffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
String fileName = UUID.randomUUID().toString()+fileSuffix;
File files = new File(fileDir+"/"+fileName);
file.transferTo(files);
}catch (Exception e){
return "上传失败";
}
return "上传成功!";
}
}
我们使用UUID对图片名进行重命名,避免文件夹重复名导致xxx.png后加(1)最终导致图片找不到。 因为Springboot已经帮我们集成好了基础的依赖包,里面包含了图片上传,所以我们只需要依赖一条就OK!