vue axios form-data格式 传输数据和文件

2 篇文章 0 订阅

vue axios form-data格式 传输数据和文件

form-data是在post请求下的一种传输方式,数据会在Form Data中传输,他的格式不是正常的JSON格式传输的,传输的数据由boundary(例子中的------WebKitFormBoundaryRO0YA4pq9oCgwTkt)来分割

------WebKitFormBoundaryRO0YA4pq9oCgwTkt
Content-Disposition: form-data; name="id"

undefined
------WebKitFormBoundaryRO0YA4pq9oCgwTkt
Content-Disposition: form-data; name="type"

1
------WebKitFormBoundaryRO0YA4pq9oCgwTkt
Content-Disposition: form-data; name="name"

......此处省略一堆参数

------WebKitFormBoundaryRO0YA4pq9oCgwTkt--

在这里插入图片描述

开始

默认的headers中的Content-Typeapplication/x-www-form-urlencoded,首先要把Content-Type改为multipart/form-data; boundary={boundary}boundary找你的后端要)

axios({
    url: "/aaa/bbb",
    method: 'post',
    data: xxx,
    headers: {"Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryn8D9asOnAnEU4Js0" }
})
// 或者在路由拦截中统一修改
service.interceptors.request.use(
req => {
    req.headers = {
        // 'Content-Type': 'application/json',
        'Content-Type': 'multipart/form-data; boundary=----WebKitFormBoundaryn8D9asOnAnEU4Js0',
    }
    return req;
}

FormData

开头处我们说了form-data的传输格式,我们需要使用到formData对象

  • new FormData()

比如我们需要传输的对象是

{
    name: '小红',
    age: 18,
    file: File {name: "xxx.jpg",...} // 一个图片文件
}

可以先创建一个FormData对象,然后通过.append(key,val)的方式将需要的内容放在FormData对象中,传参时把这个对象传过去就可以了

let formData = new FormData();
formData.append('name','小红');
formData.append('age',18);
formData.append('file',File文件);

传输

整体传输示例

// html
<input type="file" ref="input" />

// js
let formData = new FormData();
formData.append('name','小红');
formData.append('age',18);
formData.append('file',this.$refs.input.files[0]);

let url = '你的请求地址'
axios.post(url,formData,{
    headers:{
        "Content-Type": "multipart/form-data; boundary=----WebKitFormBoundaryn8D9asOnAnEU4Js0"
    }
})

在这里插入图片描述

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值