form 表单提交 保存的时候再提交文件,之前一直是选择文件就传了,这个也比较好
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 表单提交 保存的时候再提交文件,之前一直是选择文件就传了,这个也比较好的更多相关文章
- 如何让form表单在enter键入时不提交
今天在做我的一个小玩意 在线聊天工具的时候 form表单只有一个text和一个button每当我键入enter的时候就刷新.很是郁闷,直接在form上onsumbit=false.才行. 下面是我查询 ...
- form表单 一个input时 回车自动提交
问题描述 form表单中,如果当前表单只有一个input输入框时,单击回车会自动提交当前表单. 解决方案 在当前form表单中添加一个隐藏的input, <input style="d ...
- 【jQuery】将form表单通过ajax实现无刷新提交
//将form转换为AJAX提交 function ajaxSubmit(url,frm,fn){ var dataPara=getFormJson(frm); $.ajax({ url:url, t ...
- html form表单追加input元素后在提交
form.append(input); //input为对象 (设置name和val有效) $("#form1").submit();//提交事件
- js阻止form表单重复提交
防止表单重复提交的方法总体来说有两种,一种是在js中阻止重复提交:另一种是在后台利用token令牌实现,大致思路是生成一个随机码放到session和form表单的隐藏输入框中,提交表单时两者对比,表单 ...
- HTML 中按钮作为form表单元素提交特性两则 --- 参HTML考标准分析
相同name的submit 类型的input提交行为 描述 这种情况, <input type="submit" name="ACTION" value= ...
- form表单取消按钮自动提交
默认写在form表单里的按钮可以自动提交表单,现在要实现的效果是点击button按钮调用js函数,再有ajax提交 <button type="button" class=& ...
- Html form 表单提交前验证
可以使用form表单的onsubmit方法,在提交表单之前,对表单或者网页中的数据进行检验. onsubmit指定的方法返回true,则提交数据:返回false不提交数据. 直接看下面的代码: 1 & ...
- 使用ajax方法实现form表单的提交(附源码)
写在前面的话 在使用form表单的时候,一旦点击提交触发submit事件,一般会使得页面跳转,页面间的跳转等行为的控制权往往在后端,后端会控制页面的跳转及数据传递,但是在某些时候不希望页面跳转,或者说 ...
- 使用ajax方法实现form表单的提交
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 写在前面的话 在使用form表单的时候,一旦点击提交触发submit ...
随机推荐
- 金融领域:产业链知识图谱包括上市公司、行业和产品共3类实体,构建并形成了一个节点10w+,关系边16w的十万级别产业链图谱
金融领域:产业链知识图谱包括上市公司.行业和产品共3类实体,构建并形成了一个节点10w+,关系边16w的十万级别产业链图谱 包括上市公司所属行业关系.行业上级关系.产品上游原材料关系.产品下游产品关系 ...
- 图学习初探Paddle Graph Learning 构建属于自己的图【系列三】
项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5000517?contributionType=1 如遇到问题查看原项目解决 图学习温故 ...
- SpringCloud-Gateway搭建保姆级教程
一.网关介绍 1.什么是网关? 使⽤服务⽹关作为接⼝服务的统⼀代理,前端通过⽹关完成服务的统⼀调⽤ 2.⽹关可以⼲什么? 路由:接⼝服务的统⼀代理,实现前端对接⼝服务的统⼀访问 过滤:对⽤户请求进⾏拦 ...
- 小团队如何妙用 JuiceFS
早些年还在 ENJOY 的时候, 就已经在用 JuiceFS, 并且一路伴随着我工作过的四家小公司, 这玩意对我来说, 已经成了理所应当不可或缺的基础设施, 对于我服务过的小团队而言, 更是实实在在的 ...
- AOF
AOF 基础概念 以日志的形式记录了每个写操作 在redis重新运行时,会将这些操作重新执行一遍 文件形式:appendonly.aof 开启AOF需要更改配置文件:appendonly:yes AO ...
- 解决npm 下载速度慢的问题
更换源,这个是最直接方便 有保障的方法了,不要去安装cnpm,因为你无法确定 他是否做了后门.!! 1. 如果不想安装cnpm 又想使用淘宝服务器来下载扩展插件:(这种方法 每次都得带 废弃) npm ...
- .NET Core开发实战(第28课:工作单元模式(UnitOfWork):管理好你的事务)--学习笔记
28 | 工作单元模式(UnitOfWork):管理好你的事务 工作单元模式有如下几个特性: 1.使用同一上下文 2.跟踪实体的状态 3.保障事务一致性 我们对实体的操作,最终的状态都是应该如实保存到 ...
- Linux shell的while循环
while循环 #!/bin/bash #其中":"表示while循环的条件永远为真的意思 while : do read -p "Enter a number [1-5 ...
- 错误发布--如何配置最新的JDK21
如何配置最新的JDK21 时间:2024/2/3 官网 www.oracle.com 找到对应版本JDK21 可选择语言翻译版本 根据需求选择合适JDK版本.操作系统.位数 三个安装包格式:最简洁的是 ...
- NEMU PA 1 实验报告
课程地址: PA1-1 https://www.bilibili.com/video/BV1JE411J7AK PA1-2 https://www.bilibili.com/video/BV1EE41 ...