美文网首页
axios请求发送formData对象

axios请求发送formData对象

作者: 扶得一人醉如苏沐晨 | 来源:发表于2022-11-11 09:04 被阅读0次

今天在做一个文件上传功能时,遇到一个问题,把前端用el-upload上传的file发送给后端,像往常一样用axios传data,用QS stringify 序列化数据发送给后端,并不接受,查了资料才解决,原来我们的后端不接受 payload 方式上传,只能用 FormData 格式,把所有参数都放在 FormData 内发送过去即可。

beforeUpload内

          beforeUpload(file) {
                this.$refs['upload'].clearFiles()
                this.dataForm.multipartFile = null
                this.fileList = []
                // console.log(file)
                var testmsg = file.name.substring(file.name.lastIndexOf('.') + 1)
                const extension = testmsg === 'xls'
                const extension2 = testmsg === 'xlsx'
                const isLt2M = file.size / 1024 / 1024 < 10
                if (!extension && !extension2) {
                    this.$message({
                        message: '上传文件只能是 xls、xlsx格式!',
                        type: 'warning'
                    })
                }
                if (!isLt2M) {
                    this.$message({
                        message: '上传文件大小不能超过 10MB!',
                        type: 'warning'
                    })
                }
                if ((extension || extension2) && isLt2M) {
                    this.dataForm.multipartFile = file
                    this.fileList.push(file)
                }
                return (extension || extension2) && isLt2M
            },

写一个方法将form绑定的对象转化为formData格式

         jsonToFormData(dataForm) {
                const formData = new FormData()
                formData.append('status', '0')
                formData.append('createBy', this.userInfo.name)
                formData.append('deptId', dataForm.deptId)
                formData.append('taskNumber', dataForm.taskNumber)
                formData.append('customer', dataForm.customer)
                formData.append('transType', dataForm.transType)
                formData.append('companyPrifixLen', dataForm.companyPrifixLen)
                formData.append('tagSize', dataForm.tagSize)
                formData.append('filterValue', dataForm.filterValue)
                formData.append('multipartFile', dataForm.multipartFile)
                formData.append('serialNumber', dataForm.serialNumber)
                formData.append('partition', dataForm.partition)
                if (dataForm.serialSuffix) {
                    formData.append('serialSuffix', dataForm.serialSuffix)
                } else {
                    formData.append('serialSuffix', '0')
                }
                return formData
            },

表单提交

这里注意,一定要把axios中的header中的content-type改为'multipart/form-data'

const header = {
    // 必须要把 Content-Type 改为 multipart/form-data
    'Content-Type': 'multipart/form-data'
}
                            const formData = this.jsonToFormData(this.dataForm)
                            this.loading = true
                            addObj(formData)
                                .then((data) => {
                                    this.loading = false
                                    this.$notify.success('添加成功')
                                    this.visible = false
                                    this.$emit('refreshDataList')
                                })
                                .catch(() => {
                                    this.loading = false
                                    this.canSubmit = true
                                })

相关文章

  • axios请求发送formData对象

    今天在做一个文件上传功能时,遇到一个问题,把前端用el-upload上传的file发送给后端,像往常一样用axio...

  • axios发送formdata请求

    axios 默认是 Payload格式数据请求,但有时候后端接收参数要求必须是 Form Data 格式的,所以我...

  • vue项目配置跨域

    在config文件夹下的index文件里 axios发送post请求,传formdata参数 要传递不同类型的参数...

  • 关于http请求

    axios的post请求:1.formdata数据格式 2.json数据格式 axios的get请求:

  • axios 代理服务器

    npm i axios 下载 import axios from 'axios' 引入 发送请求axios请求 跨...

  • axios

    axios axios 是一个专注于网络请求的库! axios 的基本使用:繁 发送get请求: 发送post请求...

  • 基于 .net core + ele ui 的数据操作

    一:ele ui 的表单,绑定model 对象 二 ViewModel axios 发送 http 请求: 三 a...

  • 5.axios框架的基本使用

    axios框架支持多种请求方式向服务器发送请求数据。 tips: axios(config)默认发送的是get请求...

  • vue中发送jsonp请求

    在vue中我们一般都使用axios发送请求,但axios不支持发送jsonp类型的请求。要发送jsonp请求的话需...

  • JSON对象转成formData对象

    [JSON对象转成formData对象,formData对象转成JSON对象] 在向后端请求时,如果上传的数据里存...

网友评论

      本文标题:axios请求发送formData对象

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