总结
面试建议是,一定要自信,敢于表达,面试的时候我们对知识的掌握有时候很难面面俱到,把自己的思路说出来,而不是直接告诉面试官自己不懂,这也是可以加分的。
以上就是蚂蚁技术四面和HR面试题目,以下最新总结的最全,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考
我们继续在之前的项目中,创建一个新的项目模块,具体创建过程请参考之前的文章,创建过程略过。
2. 添加相关依赖包
这里我们要添加一些重要依赖包,主要是web依赖和thymeleaf模板依赖。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
3. 编写文件上传页面picUpload.html
我们在resource/templates目录下,创建一个文件上传页面,用于提交文件上传表单。
<!DOCTYPE HTML>
<html>
<head>
<title>pictureUploading</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
</head>
<body>
<form enctype="multipart/form-data" method="post" action="/upload">
文件: <input type="file" name="fileUpload"/>
<input type="submit" value="上传"/>
</form>
</body>
</html>
4. 配置application.properties
接着在resources目录下,创建application.properties配置文件,并设置相关配置属性,这里主要是对文件上传路径做了配置。
# Template mode to be applied to templates. See also StandardTemplateModeHandlers.
spring.thymeleaf.mode=LEGACYHTML5
spring.servlet.multipart.enabled=true
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
#文件上传目录(注意Linux和Windows上的目录结构不同)
#uploadFolder=/root/upload/
#特别要注意此位置
uploadFolder=E:/upload/
5. 创建信息提示类Message
创建一个实体类,用于对外展示文件上传后的状态信息。
package com.yyg.boot.domain;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 采用lombok简化bean
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Message {
/**
*0表示成功,-1表示失败
*/
int status;
/**
* 向前端返回的内容
*/
String massage;
}
6. 创建文件上传的UploadController类
然后我们创建一个Controller,在这里编写文件上传接口,文件上传要使用post请求方式。
package com.syc.boot.web;
import com.syc.boot.domain.Message;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.util.UUID;
/**
* 实现文件上传的控制器
*/
@Controller
public class UploadController {
@Value("${uploadFolder}")
private String fileDir;
@RequestMapping("/picUpload")
public String picUpload(){
//跳转到picUpload.html
return "picUpload";
}
@ResponseBody
@PostMapping("/upload")
public Object upload(MultipartFile fileUpload){
//获取文件名
String fileName = fileUpload.getOriginalFilename();
//获取文件后缀名
String suffixName = fileName.substring(fileName.lastIndexOf("."));
//重新生成文件名
fileName = UUID.randomUUID()+suffixName;
//指定本地文件夹存储图片
try {
System.out.println("------->>"+fileDir);
File dir = new File(fileDir);
if (!dir.exists()) {
dir.mkdirs();
}
File upload_file = new File(fileDir + fileName);
fileUpload.transferTo(upload_file);
return new Message(0,"success to upload");
} catch (Exception e) {
e.printStackTrace();
return new Message(-1,"fail to upload");
}
}
}
7. 应用程序入口类
最后编写项目入口类。
package com.syc.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class UploadWebApplication {
public static void main(String[] args) {
SpringApplication.run(UploadWebApplication.class, args);
}
}
8. 运行程序,实现文件上传
接下来我们启动程序,访问文件上传界面,选择文件进行上传,如果可以看到如下效果,则说明文件上传成功。
我这里是把文件上传到了本机的E盘目录下,真正开发时一般是上传到Linux服务器的某个目录下,过程都一样的,主要是存储位置的不同。当然现在也有很多项目是采用云存储,关于云存储我会在下一章节中带大家实现。
9. 项目结构
最后我们看一下项目的代码结构,各位可以参考创建。
三. SpringBoot中实现多文件上传
上面我们实现了单个文件的上传,但有时我们也需要同时上传多个文件,那这该如何实现呢?
1. 创建多文件上传的html页面
我们在上面的项目基础之上,创建多文件上传的html页面,页面名称是multiUpload.html。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>多文件上传</title>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"/>
</head>
<body>
<div>
<div>
<div>
<h3>多个文件上传</h3>
</div>
<div>
<form method="post" enctype="multipart/form-data" th:action="@{/uploadMultifile}">
<div>
<label for="attachment1">文件上传: </label>
### 最后
**由于篇幅限制,小编在此截出几张知识讲解的图解**
![P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌](https://img-blog.csdnimg.cn/img_convert/b81a5192c4881c131380cfffc59afa13.webp?x-oss-process=image/format,png)
![P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌](https://img-blog.csdnimg.cn/img_convert/742d20c52e317ec4f02e6d04553f03b0.webp?x-oss-process=image/format,png)
![P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌](https://img-blog.csdnimg.cn/img_convert/76c314f37553f9f615f8279c500a1bea.webp?x-oss-process=image/format,png)
![P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌](https://img-blog.csdnimg.cn/img_convert/db034ab99530e687ae89f45996ee8516.webp?x-oss-process=image/format,png)
![P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌](https://img-blog.csdnimg.cn/img_convert/d1e187081688a8cdb718cb9cb1d78a94.webp?x-oss-process=image/format,png)
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**
**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618154847)**
img-xSrfhhSQ-1714893834051)]
[外链图片转存中...(img-nHhvOgEx-1714893834052)]
[外链图片转存中...(img-4pF4EaCS-1714893834052)]
> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**
**[需要这份系统化的资料的朋友,可以点击这里获取](https://bbs.csdn.net/topics/618154847)**