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


猜你喜欢
- 把char数组转换成String调用reverseStr()传入一个字符串"let’s"
- 本文实例为大家分享了Android倒计时进度条展示的具体代码,供大家参考,具体内容如下效果预览源代码传送门:https://github.c
- 目录如何实现简化呢?当然,一些常见的方法已经封装在了 Norns.Urd.Extensions.Polly如何启用 Norns.Urd +
- 概念在Java中,对象的生命周期包括以下几个阶段:创建阶段(Created)应用阶段(In Use)不可见阶段(Invisible)不可达阶
- Android 自定义 Toast 显示时间实现代码:package com.wm.realname.util;import android
- 内存泄漏:是指内存得不到GC的及时回收,从而造成内存占用过多,从而导致程序Crash,也就是常说的OOM。 一、static 先来看下面一段
- flutter组件的实现参考了react的设计理念,界面上所有的内容都是由组件构成,同时也有状态组件和无状态组件之分,这里简单介绍最基本的组
- 高并发访问时,缓存、限流、降级往往是系统的利剑,在互联网蓬勃发展的时期,经常会面临因用户暴涨导致的请求不可用的情况,甚至引发连锁反映导致整个
- @Order控制配置类/AOP/方法/字段的加载顺序1.AOP加载顺序 @Component &nbs
- 前面文章已经详细介绍了Android界面的入门技术,相信大家在看完和跟着练习之后,会对于常用的Layout和View都会有一定的了解了,接下
- 一、什么是Spring?Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架二、如何在程序中获取Spring配置的be
- java * 类可以分为两种。 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存
- 前言大部分来自:https://blog.csdn.net/justloveyou_/article/details/61672133。并在
- 本文介绍Android平台进行数据存储的五大方式,分别如下:1 使用SharedPreferences存储数据2 文件存储数据 &
- 本文实例讲述了Android编程实现图片放大缩小功能ZoomControls控件用法。分享给大家供大家参考,具体如下:MainActivit
- 做tcp网络编程,要解析一批批的数据,可是数据是通过Socket连接的InputStream一次次读取的,读取到的不是需要转换的对象,而是要
- 出现这种错误的原因可能是:1.本机默认使用(编译)的jdk与该项目所使用的jdk版本不同。2.jdk版本不适用于这个Idea,很典型的一个例
- C#编写winform程序时,用到的,格式强转,存储到数据库,数据库连接那块就不写了希望对大家有帮助,欢迎评论互相分享技术!//日期格式强制
- Looper是什么用于为线程运行消息循环的类。默认情况下,线程没有与之关联的消息循环。要创建一个,在要运行循环的线程中调用 prepare(
- 本文实例为大家分享了Android实现滚动日期选择器的具体代码,供大家参考,具体内容如下wheelview滚动效果的View这段时间需要用到