SpringBoot实现简单文件上传功能

作者:Dailyblue 时间:2021-07-22 21:52:49 

通过 SpringBoot 实现了表单下的文件上传,前后端分离情况下的文件上传。本案例不连接数据库,只做基本的文件上传操作。

在 SpringBoot 中不需要额外导入其他依赖,正常引入即可。

后端 controller 的写法

package com.dailyblue.java.controller;
 
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
 
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
 
@RestController
@RequestMapping("/upload")
public class UploadController {
 
    @PostMapping
    public String upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) throws Exception {
        // file:上传文件
        // 获取到 images 的具体路径
        // String realPath = request.getRealPath("images");
        String realPath = ResourceUtils.getURL("classpath:").getPath() + "/static/images";
        System.out.println("上传的文件地址是:" + realPath);
        // 服务器中对应的位置
        // 产生唯一的文件名称
        String fileName = UUID.getUUid();
        // 获取到文件后缀
        String fileType = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
        File src = new File(realPath, fileName + fileType);
        // 将file文件传递到src去
        file.transferTo(src);
        return "images/" + fileName + fileType;
    }
}

这里只做了简单的文件上传,没有限制文件类型。 

前端写法

这里分为两种写法,一种是常用的表单提交,另一种是当下较火的 Vue 上传方式。

表单写法

<form action="upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file"/>
    <button>上传</button>
</form>

Vue 写法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">
    <img :src="'http://localhost:8081/'+img" v-show="flag"/>
    <input type="file" @change="changeImg"/>
    <button @click="upload">Vue 上传</button>
</div>
</body>
</html>

<script src="js/vue.min.js"></script>
<script src="js/axios.min.js"></script>
<script>
    new Vue({
        el: '#app',
        data: {
            file: null,
            img: '',
            flag: false
        },
        methods: {
            changeImg(event) {
                this.file = event.target.files[0];
            },
            upload() {
                // 表单数据
                let data = new FormData();
                data.append('file', this.file);
                // 定义发送格式
                let type = {
                    headers: {
                        'Content-Type': 'multipart/form-data'
                    }
                }
                axios.post('http://localhost:8081/upload', data, type)
                    .then((response) => {
                        this.img = response.data;
                        this.flag = true;
                    });
            }
        }
    });
</script>

来源:https://blog.csdn.net/Dailyblue/article/details/125406319

标签:SpringBoot,文件上传
0
投稿

猜你喜欢

  • MyBatis-Plus多表联查的实现方法(动态查询和静态查询)

    2023-11-23 22:26:45
  • 详解Java变量与常量

    2023-11-09 21:00:14
  • Java多线程开发工具之CompletableFuture的应用详解

    2023-08-30 00:43:00
  • 解决RedisTemplate调用increment报错问题

    2023-11-20 06:35:05
  • Android 动画之TranslateAnimation应用详解

    2023-06-27 06:17:59
  • Java实现二分查找算法实例分析

    2022-06-01 07:30:32
  • 轻松掌握Java迭代器模式

    2023-11-29 03:15:22
  • java实现微信扫码支付功能

    2023-11-09 18:38:08
  • 基于springboot 配置文件context-path的坑

    2021-07-04 17:37:27
  • Java将json对象转换为map键值对案例详解

    2023-11-28 07:38:43
  • java 如何判断是否是26个英文字母

    2023-11-29 15:51:59
  • java中TESTful架构原理分析

    2022-03-02 21:12:10
  • Spring运行时动态注册bean的方法

    2023-11-25 04:16:58
  • spring mvc中@RequestBody注解的作用说明

    2022-04-07 14:15:02
  • springMvc注解之@ResponseBody和@RequestBody详解

    2022-10-09 17:57:19
  • 详解spring boot引入外部jar包的坑

    2021-07-29 10:49:49
  • Java实现一个顺序表的完整代码

    2023-09-21 01:00:59
  • Java求一个分数数列的前20项之和的实现代码

    2021-08-22 14:59:58
  • 详解SpringBoot修改启动端口server.port的四种方式

    2022-03-10 20:28:48
  • springboot配置mysql数据库spring.datasource.url报错的解决

    2023-10-04 12:49:26
  • asp之家 软件编程 m.aspxhome.com