1.导入jar包
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
2.编写html页面
注意事项:
1.以form表单提交
2.提交方式必须为POST
3.enctype的属性值为enctype="multipart/form-data"
4.action="/xxx" 提交到控制器(controller)
5. 中的name值与controller(MultipartFile fileupload)中的值保持一致
代码:
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<form method="post" action="/file/fileupload" enctype="multipart/form-data">
<input type="file" name="fileupload"> <br>
<button type="submit">上传</button>
</form>
</body>
</html>
3.编写配置文件
#文件上传大小
spring.servlet.multipart.max-file-size=2MB
#图片上传位置
spring.fileupload.photo.path=C:/Users/ASUS/Pictures/Camera Roll
4.编写Controller
package com.example.demo.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;
@Controller
@RequestMapping("/file")
//页面渲染
public class FileUpLoad {
@RequestMapping("/fileup")
public String file(){
return "fileUp";//返回上传页面
}
@Value("${spring.fileupload.photo.path}")//取配置文件中的定义的上传位置
private String uploadFilePath;//定义上传位置
@RequestMapping("/fileupload")
public String fileupload(MultipartFile fileupload) throws IOException {
File f = new File(uploadFilePath);
//判断定义的上传位置是否存在
//如果不存在,则创建出来
if (!f.exists()){
f.mkdirs();//创建文件路径
}
//设置日期格式
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String time = dateFormat.format(new Date());
//拼接文件夹名称
File file = new File(uploadFilePath+time);
//判断文件夹是否存在
if (!file.isDirectory()){
file.mkdirs();
}
//获取文件名称
String filename = fileupload.getOriginalFilename();
//以UUID进行文件名称拼接, 避免发生文件名称相同,产生覆盖问题
String newFilename = UUID.randomUUID().toString() +"_"+ filename;
//完成文件上传
fileupload.transferTo(new File(file,newFilename));
return "fileUp";
}
}

本文介绍了SpringBoot如何实现单个文件上传,包括导入相关jar包,创建HTML页面,设置表单提交注意事项,编写配置文件,以及Controller的编写。在HTML页面中,需要注意form表单的提交方式为POST,action指向控制器,且表单元素name与Controller参数名匹配。
&spm=1001.2101.3001.5002&articleId=116743073&d=1&t=3&u=5a314d08c63e49e48cf3fe8d271e49e4)
6663

被折叠的 条评论
为什么被折叠?



