青椒茄子
青椒茄子
  • 发布:2022-10-21 16:22
  • 更新:2025-11-26 18:45
  • 阅读:8916

解决uni.request不支持发送FormData格式数据的办法,兼容所有端

分类:uni-app
  1. uni-app非H5端不支持FormData,因此uni.request无法发送multipart/form-data格式数据
  2. 而uni.uploadFile可以发送FormData格式数据,因此转为uni.uploadFile实现:
uni.uploadFile({  
    url: "您的接口地址",  
    filePath: '123', // 随便填,不为空即可  
    name: '123', // 随便填,不为空即可  
    header: header, // 可以加access_token等  
    formData: data, // 接口参数,json格式,底层自动转为FormData的格式数据  
    complete: (res)=>{  
            console.error(res);  
        }  
    })

此方法兼容所有端

0 关注 分享

要回复文章请先登录注册

用户2915038

用户2915038

uniapp x 下面这个办法好像不大行了,安卓客户端会提示 open failed: ENOENT (No such file or directory)‌ 。。。
我手搓了一下formdata请求体。。。

```
function mkFormData(contentData : UTSJSONObject) : string[] {
const bodyStrArr : string[] = [];
const date = new Date().valueOf();
const boundary = '----WebKitFormBoundary' + date;
//
contentData.toMap().forEach((v : any | null, k : string) => {
if (v == null) { return; }
const formStr = `--${boundary}\r\nContent-Disposition: form-data; name="${k}"\r\n\r\n${v}\r\n`;
bodyStrArr.push(formStr);
})
bodyStrArr.push(`--${boundary}--`);
return [boundary, bodyStrArr.join('')];
}
```

请求用
```
formDataStr=mkFormData({a:1});
uni.request({
url: serverUrl + path,
method: 'POST',
header: {
'auth-token': getToken(),
"Content-Type": `multipart/form-data; boundary=${formDataStr[0]}`
},
data: formDataStr[1],
});
```
2025-11-26 18:45
o***@163.com

o***@163.com

阿里云oss要求PUT咋办
2025-07-10 09:48
1***@163.com

1***@163.com

确实可以,会多一个get请求,参数会多一个你设置的name
2024-08-08 16:59
一只月月鸟呀

一只月月鸟呀

很棒,解决了我的问题
2024-07-16 15:09