美文网首页
Axios的from表单提交

Axios的from表单提交

作者: 易冷zzz | 来源:发表于2021-03-10 17:41 被阅读0次

注意:form表单的请求头有两种:application/x-www-form-urlencoded 和 multipart/form-data
如果没有type=file的控件,用默认的application/x-www-form-urlencoded就可以了。 但是如果有type=file的话,就要用到multipart/form-data了。浏览器会把整个表单以控件为单位分割,并为每个部分加上Content-Disposition(form-data或者file),Content-Type(默认为text/plain),name(控件name)等信息,并加上分割符(boundary)。

                axios({
                    url: this.actionUrl,
                    method: 'post',
                    data: {
                        ...this.uploadData
                    },
                    headers: {
                        'Content-Type': 'multipart/form-data'//含有附件的表单提交的Content-Type
                        //'Content-Type': 'application/x-www-form-urlencoded'//普通表单提交的Content-Type
                    },
                    transformRequest: [data => {
                        let formData = new FormData()
                        for(let key in this.uploadData){
                            formData.append(key, this.uploadData[key])
                        }
                        return formData
                    }],
                }).then(res => {
                    if(res.data.code === 0){
                        this.$message.success(res.data.message)
                    }else{
                        this.$message.error(res.data.message)
                    }
                }).catch(err => {console.log(err)})

用途:对于表单中含有上传附件的功能,如果不上传附件只填写并提交其他项,则上传组件的无法提交,使用axios采用表单提交数据。如下图所示:

image.png

根据勾选的节点动态添加上传组件实现一次性上传的实现方案:

                            let axiosArr = []   
                            this.$refs.upload.forEach((item, index) => {
                                //有附件使用submit()提交,否则使用表单提交数据
                                if(item.uploadFiles && item.uploadFiles.length){
                                    item.submit()
                                }else{
                                    let uploadData = this.appealQuestionList[index]
                                    let promise1 = axios({
                                        url: this.actionUrl,
                                        method: 'post',
                                        data: {
                                            ...uploadData
                                        },
                                        headers: {
                                            'Content-Type': 'multipart/form-data'//含有附件的表单提交
                                        },
                                        transformRequest: [data => {
                                            let formData = new FormData()
                                            for(let key in uploadData){
                                                formData.append(key, uploadData[key])
                                            }
                                            return formData
                                        }],
                                    })
                                    axiosArr.push(promise1)
                                }
                            })
                            axios.all(axiosArr).then(axios.spread(() => {
                                this.$message.success('操作成功')
                                this.fullscreenLoading = false
                                this.goBack()
                            }))

相关文章

  • Axios的from表单提交

    注意:form表单的请求头有两种:application/x-www-form-urlencoded 和 mult...

  • axios 相关知识小记

    axios 1.axios请求方式 get 获取数据 post 提交数据(表单提交 +文件上传) put 更...

  • axios学习笔记

    一、axios的基本使用 get,获取数据 post,提交数据(表单提交以及文件上传) put,更新数据 (提交所...

  • html基础

    表单标签及输入类型 action 提交表单地址,method提交方式:get,post 输入文本框 ...

  • 前端 表单 框架集

    表单 from 添加表单 action 指向服务器地址from action:提交到后台服务器method=‘...

  • 常用方法

    一 :●from action="" method="get" from:表单,主要是用来提交数据的 actio...

  • HTML----表单

    表单 from 添加表单 action 指向服务器地址from action:提交到后台服务器method=‘ge...

  • html中的form表单标签属性

    from:表单 action:提交地址 ,动作 目标method:提交方式(get ,post) input:(v...

  • vue中axios发送post请求

    axiox的post参数提交 下面这个代码是修改axios post的提交方式为表单的方式 在node中 处理...

  • [iOS]HTTP multipart/form-data上传报

    multipart/from-data是一种进行表单提交时的消息格式。表单提交数据的时候,默认类型是applica...

网友评论

      本文标题:Axios的from表单提交

      本文链接:https://www.haomeiwen.com/subject/pviwqltx.html