SpringBoot+Vue表单文件上传
Spring Boot + Vue 的文件上传本身没有什么难点,但如果涉及到是一个表单对象中存在文件,则会比较繁琐
更多精彩
- 更多技术博客,请移步 asing1elife’s blog
后端实体类
- Spring Boot中对于文件的接收类型和Spring MVC保持一致,使用MultipartFile
- 与Spring MVC不同的是Spring Boot进行文件上传操作不需要添加配置信息,Spring Boot自身已经默认开启了文件上传功能
...public class Work {...@Transientprivate MultipartFile referenceFile;...
}
后端接收请求的接口
- SpringBoot与Vue进行集成,使用axios进行异步请求发送,对于接收对象类型的数据一般使用**@RequestBody**的注解将对象解析为JSON格式
- 但是MultipartFile类型的文件无法转换为JSON格式,所以此处需要使用**@ModelAttribute**的注解接收对象信息
...@RestController
@RequestMapping("/${contextPath}/works")
public class WorkController extends SimpleController<Work, WorkService> {...@ApiOperation("保存作业")@PostMapping("")public ResponseData saveRule(@ModelAttribute Work work) {return workService.save(work);}...
}
前端对文件数据的处理
- 使用默认的文件输入框进行文件上传会影响美观,所以通常将输入框隐藏后通过点击按钮进行调用
- 由于文件格式的input属性是只读的,所以无法使用v-model对其数据的更改进行实时获取
- 所以需要通过**@change**对其数据的更改进行监听,并赋值给表单的对应属性
<template><in-form ref="inForm" :form="work" :rules="rules" :is-file="true">...<el-button type="success" v-else @click="uploadReferenceFile">上传答案 <span v-text="work.reference"></span><input type="file" class="upload-file" ref="referenceFile" @change="setReferenceFile"></el-button>...</in-form>
</template><script type="text/ecmascript-6">
...export default {...methods: {...// 上传参考答案uploadReferenceFile () {this.$refs.referenceFile.click()},// 设置参考答案setReferenceFile (item) {let currentFile = item.target.files[0]this.work.reference = currentFile.namethis.work.referenceFile = currentFile}...}
</script><style scoped lang="stylus" rel="stylesheet/stylus">.upload-filedisplay none
</style>
前端发起请求的方式
- 文件格式的数据无法通过JSON格式进行传递,所以需要使用FormData对表单数据进行转换
- 但FormData只能接受String和File格式的数据,对应Object格式的数据无法处理
- 如果涉及到Object格式的数据则需要前后端配合进行数据转换
- 通常情况下对象中关联的对象只涉及到其中的某一个值,所以前端在处理时可以单独将该值进行传递
- 后端在接收到该值后,可以在其Setter方法中将数据赋予对应的对象即可
export function save ({url, data}, isFile) {// 带文件的上传功能if (isFile) {let formData = new FormData()// 遍历传入的数据for (let key in data) {// 获取当前值let currentData = data[key]// 对于空值进行过滤if (currentData === '') {continue}// 将对象中的键值对传入formData中formData.append(key, currentData)}data = formData}return fetch({url: url,method: config.POST,data})
}
限制文件大小
- 只需要在::application.properties::中添加如下配置即可
spring.http.multipart.max-file-size=10MB
spring.http.multipart.max-request-size=10MB
SpringBoot+Vue表单文件上传相关推荐
- 保姆级别SpringBoot接入又拍云实现表单文件上传手册
一.背景 本来打算使用七牛云进行文件上传的,由于自己一直没有实名认证(需要上传手持身份证就很烦),导致现在想用的时候用不了.另外自己所在的公司用的是又拍云,就试着看看又拍云能不能用,结果就有了这篇文章 ...
- Ajax(form表单文件上传、请求头之contentType、Ajax传递json数据、Ajax文件上传)
form表单文件上传 上菜 file_put.html <form action="" method="post" enctype="multi ...
- vueform表单文件上传_峰哥说技术系列-8.Spring Boot文件上传(Form表单和Ajax方式)
今日份主题 Spring Boot文件上传(Form表单和Ajax方式) 在Spring Boot中,和文件上传的主要和MultipartResolver接口有关,他有两个实现类 StandardSe ...
- form表单文件上传
form表单文件上传 form表单文件上传的ajax方法与文本上传有一些不一样 首先form表单的enctype属性写为**"multipart/form-data"** 默认是a ...
- c语言表单文件上传,requests实现文件上传(对应postman form-data)
requests实现文件上传(对应postman form-data) requests实现文件上传(对应postman form-data) postman发送post请求,有的情况需要发送form ...
- PHP 表单文件上传的原理,php上传文件的原理
文件上传原理 将客户端的文件上传到服务器,再将服务器的临时文件上传到指定目录 客户端配置 提交表单 表单的发送方式为post 添加enctype="multipart/form-data&q ...
- 表单+文件上传+音频+iframe
一.表单及其标签 首先书写结构 <form action="表单提交地址" menthod="post get提交方式"> form只是外边框 & ...
- 使用form表单文件上传(enctype)
引入两个架包 commos-fileupload.jar commons-fileupload.jar依赖于commons-io.jar 表单的提交方式必须为post 在表单中必须添加一个属性enct ...
- SpringBoot+Vue+ElementUI实现文件上传与文件下载
作者: Memory(星哥) Wechat:/QQ: 574373426 整理不易,感谢支持,欢迎 收藏 转发 分享 专注IT职业教育多年,学编程找星哥 SpringBoot+Vue+ElementU ...
最新文章
- Centos 安装 MySql
- python 单元测试_Python 单元测试(unittest)
- DCMTK:TLS测试DcmSCP和DcmSCPPool类
- HDU - 3374 String Problem(最小表示法+最大表示法+KMP的next数组)
- Java学习--泛型
- rabbitmq消费者设置手动ack
- oracle不完全恢复类型,Oracle——不完全恢復
- 自动化办公-Python处理Excel生成试卷
- 基于麦克风阵列的语音信号处理技术
- 布客·ApacheCN 编程/大数据/数据科学/人工智能学习资源 2020.1
- java事务和分布式事务详解
- 重复抽样与不重复抽样的抽样平均误差大小?
- blk-mq 进行多重队列
- 机器学习之聚类算法:K均值聚类(一、算法原理)
- Unity在Canvas上画线(Draw Line)实现
- 多时点DID平行趋势检验
- GO算法-栈队列转换之互通有无
- 代码生成工具--动软
- 面渣逆袭:Spring三十五问,四万字+五十图详解 。不要错过
- 研华数据采集板卡驱动包Xnavi离线包制作教程
热门文章
- 开源漏洞扫描工具(OWASP-Dependency-Check)探索
- Firefox Test Pilot 计划正式关闭
- 如何查看本机安装的python支持哪种.whl文件
- win10安装python
- 敏捷开发 我的经验(一)基本概念
- ios7以后隐藏状态栏
- 【iOS开发-74】解决方式:Xcode6下利用preference保存数据,终于的plist文件在哪里?...
- 黑马程序员-java-高新技术中《九》
- 针对Properties中实时性要求不高的配置参数,用Java缓存起来
- 后端开发如何设计数据库系列文章(二)设计大数据量表结构