Menggunakan HTML mentah ketika saya mengirim file ke server flask menggunakan perintah berikut, saya dapat mengakses file dari permintaan flask global:
<form id="uploadForm" action='upload_file' role="form" method="post" enctype=multipart/form-data>
<input type="file" id="file" name="file">
<input type=submit value=Upload>
</form>
Dalam labu:
def post(self):
if 'file' in request.files:
....
Ketika saya mencoba melakukan hal yang sama dengan Axios, permintaan flask global kosong:
<form id="uploadForm" enctype="multipart/form-data" v-on:change="uploadFile">
<input type="file" id="file" name="file">
</form>
uploadFile: function (event) {
const file = event.target.files[0]
axios.post('upload_file', file, {
headers: {
'Content-Type': 'multipart/form-data'
}
})
}
Jika saya menggunakan fungsi uploadFile yang sama di atas tetapi menghapus header json dari metode axios.post, saya mendapatkan kunci formulir dari objek permintaan labu saya daftar csv dari nilai string (file adalah .csv).
Bagaimana saya bisa mendapatkan objek file yang dikirim melalui axios?
javascript
ajax
file-upload
axios
Don Smythe
sumber
sumber
v-on:change="uploadFile"
denganinput
alih - alihform
tag?Jawaban:
Tambahkan file ke
formData
objek, dan setelContent-Type
header kemultipart/form-data
.sumber
$_FILES
untuk mendapatkan file di sisi server karena saya menggunakan PHPFormData
. Menurut dokumen axios, keduanyaFile
danFormData
diperlakukan sebagai Browser saja , jadi kedua cara tersebut dapat dilihat secara setara ( github.com/axios/axios#request-config )data:formData
formData.getHeaders()
Ini adalah masalah yang diketahui dengan axios; lihat misalnyahttps://github.com/axios/axios/issues/789
Contoh aplikasi menggunakan Vue. Membutuhkan server backend yang berjalan di localhost untuk memproses permintaan:
https://codepen.io/pmarimuthu/pen/MqqaOE
sumber
Ini bekerja untuk saya, saya harap membantu seseorang.
sumber
headers: { 'Content-Type': 'multipart/form-data' }
adalah satu-satunya cara yang benar-benar mengirim posting setelah mendapat respon server dari opsi. Saya mungkin melakukan sesuatu yang salah, tetapi berhasil dan saya membiarkannya sendiri lol