<!DOCTYPE html> <html lang="en"> <head> <!-- Load required Bootstrap and BootstrapVue CSS --> <link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css"/> <link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap-vue@^2/dist/bootstrap-vue.min.css"/> <!-- Load polyfills to support older browsers --> <script src="//polyfill.io/v3/polyfill.min.js?features=es2015%2CMutationObserver"></script> <!-- Load Vue followed by BootstrapVue --> <script src="//unpkg.com/vue@^2/dist/vue.min.js"></script> <script src="//unpkg.com/bootstrap-vue@^2/dist/bootstrap-vue.min.js"></script> <script src="//unpkg.com/axios/dist/axios.min.js"></script> <meta charset="UTF-8"> <title>Memes</title> </head> <body> <div id="app"> <b-navbar> <b-navbar-brand>Emojys</b-navbar-brand> <b-navbar-nav> <b-nav-item v-for="item in nav" :href="item.url" :active="item.name === 'Meme'" :key="item.key">{{ item.name }} </b-nav-item> </b-navbar-nav> </b-navbar> <b-navbar> <b-navbar-nav> <b-nav-item href="/emojy/stats">Stats</b-nav-item> <b-nav-item href="/emojy/list">List</b-nav-item> <b-nav-item active href="/emojy/new">Upload</b-nav-item> </b-navbar-nav> </b-navbar> <div style="background-color:red;" variant="error" v-if="err != ''" @click="err = ''"> {{ err }} </div> <div class="container"> <label>Passphrase</label> <b-input v-model="password"></b-input> <label>File <input type="file" @change="handleFileUpload( $event )"/> </label> <br> <button @click="submitFile()">Submit</button> </div> </div> <script> var app = new Vue({ el: '#app', data: function () { return { err: '', view: '', nav: [], results: [], fileList: {}, image: null, password: '' } }, watch: { view(newView, oldView) { this.err = ''; } }, mounted() { axios.get('/nav') .then(resp => { this.nav = resp.data; }) .catch(err => console.log(err)) this.refresh(); }, methods: { refresh: function () { axios.get('/emojy/all') .then(resp => { this.results = resp.data this.err = '' }) .catch(err => (this.err = err)) axios.get('/emojy/allFiles') .then(resp => { this.fileList = resp.data this.err = '' }) .catch(err => (this.err = err)) }, handleFileUpload(evt) { this.file = evt.target.files[0]; console.log("added file data: " + this.file); }, submitFile() { let formData = new FormData(); formData.append('file', this.file); formData.append('password', this.password) console.log('trying to make/save form data: ' + formData) axios.post('/emojy/upload', formData, { headers: {'Content-Type': 'multipart/form-data'} }) .then(() => { console.log('SUCCESS!!'); window.location.href = '/emojy/list'; }) .catch(e => { console.log('FAILURE!!' + e); this.err = 'Could not upload file.'; }); } } }) </script> </body> </html>