这篇文章主要为大家详细介绍了SpringBoot实现简单文件上传功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
通过 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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程学习网。
沃梦达教程
本文标题为:SpringBoot实现简单文件上传功能
基础教程推荐
猜你喜欢
- ConditionalOnProperty配置swagger不生效问题及解决 2023-01-02
- Java文件管理操作的知识点整理 2023-05-19
- springboot自定义starter方法及注解实例 2023-03-31
- JDK数组阻塞队列源码深入分析总结 2023-04-18
- java基础知识之FileInputStream流的使用 2023-08-11
- Java数据结构之对象比较详解 2023-03-07
- java实现多人聊天系统 2023-05-19
- Java实现线程插队的示例代码 2022-09-03
- Java实现查找文件和替换文件内容 2023-04-06
- Java并发编程进阶之线程控制篇 2023-03-07