SpringBoot实现简单文件上传功能
作者:Dailyblue 发布时间:2021-07-22 21:52:49
标签: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>
来源:https://blog.csdn.net/Dailyblue/article/details/125406319
0
投稿
猜你喜欢
- 本文实例为大家分享了C语言实现扫雷游戏的具体代码,供大家参考,具体内容如下前言一、游戏规则介绍扫雷是一个十分经典的游戏,一张棋盘中有很多个不
- 要获取Java中的当前时间戳:Timestamp timestamp = new Timestamp(System.currentTimeM
- Environment的中文意思是环境,它表示整个spring应用运行时的环境信息,它包含两个关键因素profilespropertiesp
- Statement 和 PreparedStatement之间的关系和区别. 关系:Prepa
- 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体
- 本文实例讲述了Java Swing实现窗体添加背景图片的2种方法。分享给大家供大家参考,具体如下:在美化程序时,常常需要在窗体上添加背景图片
- 分类1.简单工厂模式2.工厂方法模式3.抽象工厂模式案例需求根据蛋糕的不同口味,分别创建苹果味和香蕉味的蛋糕实例方案一:简单工厂模式定义蛋糕
- 微服务治理Spring Cloud 工具套件为微服务治理提供了全面的技术支持。这些治理工具主要包括服务的注册与发现、负载均衡管理、动态路由、
- 在Spring Cloud Netflix栈中,各个微服务都是以HTTP接口的形式暴露自身服务的,因此在调用远程服务时就必须使用HTTP客户
- 前言周六在公司写Reactor模型,一女同事问我为啥都2023年了还在学习Reactor模型呀,我问她为啥快30的年纪了,周六还在公司看我写
- 今天重新装了编译器,结果崩无极限,真是日了狗了了。刚刚才知道问题在哪边。好了,说正事,对于ios开发我没接触,不是很了解,百度了半天,差不多
- 1. 定义在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。2. 使用的
- 一、ArrayList简介在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:ArrayList底层是一段连
- 本文实例讲述了C#中HttpWebRequest的用法。分享给大家供大家参考。具体如下:HttpWebRequest类主要利用HTTP 协议
- Java 字符串反转问题:给一个字符串,比如 “I love china”, 把字符反转后变成 “china love I”思路
- 项目中要使用到在线支付功能 目前常用的在线支付手段主要是 支付宝 和微信。 这里我使用的是支付宝支付,支付宝有个好处就是他有一个沙箱模式 即
- Servlet 实现文件上传所谓文件上传就是将本地的文件发送到服务器中保存。例如我们向百度网盘中上传本地的资源或者我们将写好的博客上传到服务
- 本文实例为大家分享了java数据库唯一id生成工具类的具体代码,供大家参考,具体内容如下import java.io.File;import
- 本文实例讲述了Java Arrays工具类用法。分享给大家供大家参考,具体如下:Arrays类功能描述Arrays类是一个工具类,其中包含了
- 概述在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说,程序的流程对运行结果有直接的影响。所以,我们必须清楚每条