2024年Java最全爆破专栏丨SpringBoot2(22),程序员必学

总结

面试建议是,一定要自信,敢于表达,面试的时候我们对知识的掌握有时候很难面面俱到,把自己的思路说出来,而不是直接告诉面试官自己不懂,这也是可以加分的。

以上就是蚂蚁技术四面和HR面试题目,以下最新总结的最全,范围包含最全MySQL、Spring、Redis、JVM等最全面试题和答案,仅用于参考

一份还热乎的蚂蚁金服面经(已拿Offer)面试流程4轮技术面+1轮HR

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

我们继续在之前的项目中,创建一个新的项目模块,具体创建过程请参考之前的文章,创建过程略过。

图片

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)**

  • 21
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值