axios 怎么在Post请求中,同时传递文件和对象
addAppVersion(formdata: any, file: any) {
const data = new FormData();
data.append('appfile', file);
data.append('appVersion', JSON.stringify(formdata));
//Object.entries(formdata).forEach((arr: [string,any]) => {data.append(arr[0], arr[1]);})
return new Promise((resolve: Function,reject: Function) => {
axios({
url:'/app/versionManager/addAppVersion',
method:'post',
headers: {
'Content-Type': 'multipart/form-data',
},
data: data
}).then((res: any) => {
resolve(res.data)
}).catch((err: any) => {
reject(err)
});
})
formData.append(name, value) 表单的值。
是 USVString
或 Blob
(包括子类型,如 File
)。所以上述的date需要被JSON.stringify,才能存入FormData字符串。我这里想在请求前进行appVersion
值的反序列化,但是尝试使用transformRequest
和拦截器都失败了。
这样请求的参数appVersion是一个JSON字符串,能不能做到直接传递一个对象参数呢?或者用其他方式传递file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
传入一个 FormData(multipart/form-data),却序列化成了 JSON(application/json),最后又强行指定数据类型是键值对(application/x-www-form-urlencoded)???
这是什么奇葩的写法???
为啥不直接用 FormData 往上传???
axios的表单上传好像是这种写法吧
我在实践中是这样使用的,可以同时传图片和自定义参数