FormDataを使用して画像をアップロードし、他のデータを送信したいとき。 Axiosは画像をシリアライズしているようだ。したがって、Axiosを使用して画像をアップロードすると、画像はボディのペイロードの内部に文字列として格納されます。その結果、リクエストからアップロードされたイメージを取得するために、サーバー側でMulterを使用することができません。VueのAxiosがサーバーに画像をアップロードしない
これは私のVueのコードです:
export default() {
name: 'app',
data() {
image: ''
},
methods: {
onFileChange (e) {
var files = e.target.files || e.dataTransfer.files
if (!files.length) {
return
}
// console.log(files[0])
// var x = files[0]
return this.createImage(files[0])
// return new Buffer(x)
},
createImage (file) {
// var image = new Image()
var reader = new FileReader()
var vm = this
reader.onload = (e) => {
// vm.image = e.target.result
vm.image = file.toString('base64')
console.log(vm.image)
}
reader.readAsDataURL(file)
},
submitStaff() {
const formData = new FormData()
formData.append('file', this.image)
formData.append('name', this.data.name)
formData.append('username', this.data.username)
formData.append('password', this.data.password)
axios.post('api/myApiUrl', formData)
.then(function (response) {
console.log(response)
})
.catch(function (error) {
console.log(error)
})
}
}
<input type="file" @change="onFileChange">
私はこれを修正するのですか?ありがとうございました!