Мне крайне сложно понять, как сделать POST-запрос к моему бэкэнду, когда файл задействован при использовании Vue. js для внешнего интерфейса и Ax ios для POST request.
Я хотел бы позволить пользователю выбрать изображение для сервера, который он создает, однако я наткнулся на кирпичную стену. Я добавил ввод с типом файла, и всякий раз, когда пользователь выбирает изображение, я устанавливаю свойство файла для этого изображения. Проблема в том, что я не знаю, что делать дальше. Как мне заставить Ax ios отправлять запрос POST как enctype= multipart/form-data
и как мне применить файл к полезной нагрузке, которую я отправляю с запросом POST?
<form @submit='createServer($event)'>
<input v-model="addServerInput.name" placeholder="Enter a server name">
<input type="file" name="image" @change="handleFileUpload($event)">
<button type="submit" name="button">Create</button>
</form>
<script>
import axios from 'axios'
export default {
data(){
return {
addServerInput: {
name: '',
file: ''
}
}
},
methods: {
handleFileUpload(event){
this.addServerInput.file = event.target.files[0]
},
createServer(event){
event.preventDefault()
let server = {
name: this.addServerInput.name,
userId: localStorage.userId
}
axios.post('/createServer', server)
.then((response) => {
this.addServerWindow = false;
this.$store.commit('addServer', response.data)
})
.catch((error) => {
console.log(error);
});
}
}
}
</script>