依赖:ponm.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--七牛云-->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.2.0,7.2.99]</version>
</dependency>
<!-- hutool工具类-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.3.3</version>
</dependency>
<!--热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
配置 :application.yml
#修改端口号
server:
port:
8080
#配置静态资源
spring:
web:
resources:
static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/file/,file:${web.url}
# 热部署
devtools:
restart:
enabled: false #开启热部署
additional-paths: src/main/java #重启目录
web:
url: D://upload
文件上传页面:html
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
<meta name="keywords" content="keyword1,keyword2,keyword3"></meta>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<form enctype="multipart/form-data" method="post" action="/upload/upload">
文件:<input type="file" name="upload"/>
姓名:<input type="text" name="name"/>
<input type="submit" value="上传"/>
</form>
<div align="center">
<img src="http://localhost:8090/1639723825884.jpg" style="width:600px;height:300px" alt="照片">
</div>
</body>
</html>
控制层controller:
package com.yzx.boot.springboot.controller;
import org.apache.tomcat.util.http.fileupload.FileUtils;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.UUID;
@RestController
@RequestMapping("/upload")
public class uploadController {
//文件上传
@RequestMapping("/upload")
public String upload(MultipartFile upload){
//获取当前文件名
String originalFilename=upload.getOriginalFilename();
//文件上传地址
String path="D:\\upload";
File file=new File(path);
if(!file.exists()){
//如果没有这个路径,就新建个
file.mkdirs();
}
//System.currentTimeMillis() 时间戳生成
//uuid生成的名字 UUID.randomUUID()
String filename= System.currentTimeMillis()
+originalFilename.substring(originalFilename.lastIndexOf("."),originalFilename.length());
//输出一下
System.out.println(filename);
try {
//构建文件上传具体路径
upload.transferTo(new File(path+"/"+filename));
} catch (IOException e) {
e.printStackTrace();
}
return filename;
}
配置限制文件上传大小的工具类:config
package com.yzx.boot.springboot.config;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.unit.DataSize;
import javax.servlet.MultipartConfigElement;
@Configuration
public class uploadConfig {
@Bean //该注解等同于 原来 xml中 <bean id="" class=""/>
//@Bean 和 @Compoment 功能基本是一样 , 前者作用于方法名上,将当前方法名返回的对象交给spring管理
//后者作用于类上面 ,将 类交给spring管理 ,通过spring框架获取对象
public MultipartConfigElement multipartConfigElement(){
MultipartConfigFactory factory = new MultipartConfigFactory();
//单个文件大小 KB、MB必须是大写
factory.setMaxFileSize(DataSize.parse("10240KB"));
//设置总上传大小
factory.setMaxRequestSize(DataSize.parse("102400KB"));
return factory.createMultipartConfig();
}
}