Install vue-axios
npm install --save axios vue-axios
https://www.npmjs.com/package/vue-axios
C:\vuejs\myapp>npm install --save axios vue-axios
C:\vuejs\myapp>npm run serve
src/main.js
//src/main.js import { createApp } from 'vue' import App from './App.vue' import axios from 'axios' // C:\vuejs\myapp>npm install --save axios vue-axios import VueAxios from 'vue-axios' createApp(App).use(VueAxios, axios).mount('#app')src/components/fileUpload.vue
//src/components/fileUpload.vue <template> <div class="container"> <div class="row"> <h1>Vuejs Vue CLI File Upload with Axios and PHP</h1> <label>File <input type="file" id="file" ref="file"/> </label> <button v-on:click="uploadFile()">Upload</button> </div> </div> </template> <script> export default { data () { return { file:'' } }, methods: { uploadFile: function(){ this.file = this.$refs.file.files[0]; let formData = new FormData(); formData.append('file', this.file); this.$refs.file.value = ''; this.axios.post('http://localhost/devtest/upload.php', formData, { headers: { 'Content-Type': 'multipart/form-data' } }) .then(function (response) { if(!response.data){ alert('File not uploaded.'); }else{ alert('File uploaded successfully.'); } }) .catch(function (error) { console.log(error); }); } }, } </script>src/App.vue
//src/App.vue <template> <div id="app"> <FileUpload/> </div> </template> <script> import FileUpload from './components/fileUpload.vue' export default { name: 'app', components: { FileUpload } } </script>upload.php
//upload.php <?php header('Access-Control-Allow-Origin: *'); $filename = $_FILES['file']['name']; $allowed_extensions = array('jpg','jpeg','png','pdf'); $extension = pathinfo($filename, PATHINFO_EXTENSION); if(in_array(strtolower($extension),$allowed_extensions) ) { if(move_uploaded_file($_FILES['file']['tmp_name'], "upload/".$filename)){ echo 1; }else{ echo 0; } }else{ echo 0; } ?>