gpt4 book ai didi

php - POST 文件和表单数据 Vue + axios

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:34:21 25 4
gpt4 key购买 nike

我有一个 Vuejs 组件的方法:

async submit () {
if (this.$refs.form.validate()) {
let formData = new FormData()
formData.append('userImage', this.avatarFile, this.avatarFile.name)
this.avatarFile = formData
try {
let response = await this.$axios.post('http://localhost:3003/api/test.php', {
avatar: this.avatarFile,
name: this.name,
gender: this.gender,
dob: this.DOB,
}, {
headers: {
'Content-Type': 'multipart/form-data; boundary=' + formData._boundary
}
})
if (response.status === 200 && response.data.status === 'success') {
console.log(this.response)
}
} catch (e) {
console.log(e)
}
}
}

test.php 中,我使用 json_decode(file_get_contents("php://input"), TRUE); 将数据读取为 $_POST 变量。

虽然我能够正确读取namegenderdob,但我无法获取avatar

有什么解决办法吗?

注意:我不会将每个变量附加为 formData.append(.., ..),因为我计划处理超过 14 个变量。

版主注意事项:我没有发现 formData 与其他数据对象一起使用的任何问题。

最佳答案

所以,我想出了一个更简单的方法:

    let rawData = {
name: this.name,
gender: this.gender,
dob: this.dob
}
rawData = JSON.stringify(rawData)
let formData = new FormData()
formData.append('avatar', this.avatarFile, this.avatarFile.name)
formData.append('data', rawData)
try {
let response = await this.$axios.post('http://localhost:3003/api/test.php', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
})

测试.php:

$_POST = json_decode($_POST['data'],true);

注意:我可以选择使用:

Object.keys(rawData).map(e => {
formData.append(e, rawData[e])
})

但由于我在处理 rawData 中的嵌套对象 (name: { first: '', last: ''} ),我选择不这样做,因为它需要递归方法客户端或服务器端。

关于php - POST 文件和表单数据 Vue + axios,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49478991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com