form 表单提交 保存的时候再提交文件,之前一直是选择文件就传了,这个也比较好

代码

<Upload :action="action"
:max-size="maxSizeMb"
:format="format"
:show-upload-list="false"
multiple
:before-upload="handleBeforeUpload"
:on-exceeded-size="handleMaxSize">
<Button>
<TfCommonIcon type="_upload-2-line"
color="#2082ED"
:size="16"></TfCommonIcon>
选择文件
</Button>
</Upload>

保存

save () {
if (this.files.length === 0) {
this.$Message.warning(`文件为空,请重新选择!`)
return
}
this.btnLoading = true
const fd = new FormData()
for (let i = 0; i < this.files.length; i++) {
fd.append('files', this.files[i])
}
console.info('this.files', this.files)
console.info('fd,', fd)
this.$api(this.action, fd, { contentType: 'multipart' }).then(res => {
if (res.status !== 20) return
this.$Message.success(`上传成功`)
this.files = []
this.visible = false
this.$emit('on-emit-upload-success', res.data)
}).finally(() => {
this.btnLoading = false
})
},

data

data () {
return {
visible: false,
btnLoading: false,
files: [], // 已选择的文件
action: `${this.$baseUrl}xxx/xxx/upload`,
format: ['mp3', 'm4a'], // pcm,wav,ogg(speex),ogg_opus,mp3,aac,m4a格式
maxSizeMb: 100 // MB
}
},

事件

handleMaxSize (file) {
this.$Notice.warning({
title: '文件大小超限',
desc: `文件${file.name}太大,上传文件大小不能超过${this.maxSizeMb}MB`
})
},
/**
* 上传之前的回调
* @param file
* @returns {boolean}
*/
handleBeforeUpload (file) {
const suffix = file.name.substring(file.name.lastIndexOf('.') + 1).toLowerCase() // 获取上传的文件后缀
if (this.format.length > 0 && !this.format.includes(suffix)) {
this.$Message.warning(`请选择${this.format}格式的文件!`)
return false
} else if (file.size > this.maxSizeByte) {
this.$Message.error(`文件大小超过${this.maxSizeMb}MB,请重新选择!`)
return false
} else {
this.files.push(file)
return false
}
}

api 部分函数

else if (_config['contentType'] === 'multipart') {
_data = data
_contentType = 'multipart/form-data'
} // 返回ajax方法
return axios.request({
url,
withCredentials: true, // 单点登录 北京用到session,全局开启
data: _data,
headers: {
'moudleId': 'xxx',
'Content-Type': _contentType,
token: getToken() ? getToken() : ''
},
method: _config.method,
responseType: _config.responseType
}).then(res => {

form 表单提交 保存的时候再提交文件,之前一直是选择文件就传了,这个也比较好的更多相关文章

  1. 如何让form表单在enter键入时不提交

    今天在做我的一个小玩意 在线聊天工具的时候 form表单只有一个text和一个button每当我键入enter的时候就刷新.很是郁闷,直接在form上onsumbit=false.才行. 下面是我查询 ...

  2. form表单 一个input时 回车自动提交

    问题描述 form表单中,如果当前表单只有一个input输入框时,单击回车会自动提交当前表单. 解决方案 在当前form表单中添加一个隐藏的input, <input style="d ...

  3. 【jQuery】将form表单通过ajax实现无刷新提交

    //将form转换为AJAX提交 function ajaxSubmit(url,frm,fn){ var dataPara=getFormJson(frm); $.ajax({ url:url, t ...

  4. html form表单追加input元素后在提交

    form.append(input); //input为对象 (设置name和val有效) $("#form1").submit();//提交事件

  5. js阻止form表单重复提交

    防止表单重复提交的方法总体来说有两种,一种是在js中阻止重复提交:另一种是在后台利用token令牌实现,大致思路是生成一个随机码放到session和form表单的隐藏输入框中,提交表单时两者对比,表单 ...

  6. HTML 中按钮作为form表单元素提交特性两则 --- 参HTML考标准分析

    相同name的submit 类型的input提交行为 描述 这种情况, <input type="submit" name="ACTION" value= ...

  7. form表单取消按钮自动提交

    默认写在form表单里的按钮可以自动提交表单,现在要实现的效果是点击button按钮调用js函数,再有ajax提交 <button type="button" class=& ...

  8. Html form 表单提交前验证

    可以使用form表单的onsubmit方法,在提交表单之前,对表单或者网页中的数据进行检验. onsubmit指定的方法返回true,则提交数据:返回false不提交数据. 直接看下面的代码: 1 & ...

  9. 使用ajax方法实现form表单的提交(附源码)

    写在前面的话 在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转,页面间的跳转等行为的控制权往往在后端,后端会控制页面的跳转及数据传递,但是在某些时候不希望页面跳转,或者说 ...

  10. 使用ajax方法实现form表单的提交

    作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 写在前面的话 在使用form表单的时候,一旦点击提交触发submit ...

随机推荐

  1. python自动化高效办公第二期,带你项目实战【一】{excel数据处理、批量化生成word模板、pdf和ppt等自动化操作}

    相关文章和数据源: Python自动化办公--Pandas玩转Excel[一] Python自动化办公--Pandas玩转Excel数据分析[二] Python自动化办公--Pandas玩转Excel ...

  2. 2.8 CE修改器:寻找共享代码

    本关我们将学习共享代码,在C语言中角色属性都是以结构体的方式进行存储的,而结构体所存储的信息都是连续性的,这一关我们将会解释如何处理游戏中的共用代码,这种代码是通用在除了自己以外的其他同类型对像上的常 ...

  3. 4.5 MinHook 挂钩技术

    MinHook是一个轻量级的Hooking库,可以在运行时劫持函数调用.它支持钩子API函数和普通函数,并且可以运行在32位和64位Windows操作系统上.其特点包括易于使用.高性能和低内存占用.M ...

  4. Vue核心概念与其指令

    Vue简述 Vue是一套构建用户UI界面的前端框架. 构建用户界面的意思是:往html中填充数据,框架的意思是:一套开发规范.   Vue的特点 1.数据驱动视图 当页面是一个普通的数据展示时,数据改 ...

  5. 理论与实战:一篇看懂Python词云

    理论与实战:一篇看懂Python词云 后宫王镇贴 前言:本文初编辑于2024年2月2日 该项目代码的仓库地址:https://github.com/A-Piece-Of-Maple/WordCloud ...

  6. 1.变量和简单的数据类型--《Python编程:从入门到实践》

    1.1 变量 在Python中使用变量时,需要遵守一些规则和指南. 变量名只能包含字母.数字和下划线.变量名可以字母或下划线打头,但不能以数字打 头. 变量名不能包含空格,但可使用下划线来分隔其中的单 ...

  7. delphi 下获取一个字符的 Unicode 编码

    用 Ord('万') 可以得到 "万" 字的 UniCode 的编码.

  8. Hive-mapjoin详解(mapjoin原理)

    笼统的说,Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join).本文简单介绍一下两种join的原理和机制. 一 .Common ...

  9. Zookeeper-ZKFC的原理和功能

    一.前言 HADOOP2 HA架构引入了ZKFC.Journalnode组件,本篇文章主要介绍ZKFC的功能和原理.HA架构支持两种切换方式: 手动切换:  通过命令实现主备之间的切换,可以用HDFS ...

  10. JS实现一个布隆过滤器

    之前专门聊过令牌桶算法,而类似的方案还有布隆过滤器.它一般用于高效地查找一个元素是否在一个集合中. 用js实现如下所示: class BloomFilter { constructor(size, h ...