2019-12-19 21:50:50 -08:00
|
|
|
<style type="text/css" scoped>
|
|
|
|
.hidden-up {
|
|
|
|
opacity: 0;
|
|
|
|
position: absolute;
|
|
|
|
top: -500px;
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
|
|
|
|
<template>
|
2020-01-02 17:26:55 -08:00
|
|
|
<div class="ui small compact basic icon button clickable">
|
2019-12-19 21:50:50 -08:00
|
|
|
<form>
|
2020-01-02 17:26:55 -08:00
|
|
|
<label :for="`upfile-${noteId}`" class="clickable">
|
|
|
|
<i class="upload icon"></i>
|
|
|
|
Upload File <span v-if="uploadPercentage != 0">{{uploadPercentage}}%</span>
|
|
|
|
</label>
|
2019-12-19 21:50:50 -08:00
|
|
|
<input class="hidden-up" type="file" :id="`upfile-${noteId}`" ref="file" v-on:change="handleFileUpload()" />
|
|
|
|
</form>
|
|
|
|
<!-- <button v-if="file" v-on:click="uploadFileToServer()">Submit</button> -->
|
|
|
|
</div>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
import axios from 'axios'
|
|
|
|
export default {
|
|
|
|
name: 'FileUploadButton',
|
|
|
|
props: [ 'noteId' ],
|
|
|
|
data () {
|
|
|
|
return {
|
|
|
|
file: null,
|
|
|
|
uploadPercentage: 0,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
mounted(){
|
|
|
|
// console.log(this.noteId)
|
|
|
|
},
|
|
|
|
methods: {
|
|
|
|
uploadFileToServer() {
|
|
|
|
let formData = new FormData();
|
|
|
|
formData.append('file', this.file);
|
|
|
|
formData.append('noteId', this.noteId)
|
|
|
|
console.log('>> formData >> ', formData);
|
|
|
|
|
|
|
|
// You should have a server side REST API
|
|
|
|
axios.post('/api/attachment/upload',
|
|
|
|
formData, {
|
|
|
|
headers: { 'Content-Type': 'multipart/form-data' },
|
|
|
|
onUploadProgress: ( progressEvent ) => {
|
|
|
|
this.uploadPercentage = parseInt(
|
|
|
|
Math.round( ( progressEvent.loaded * 100 ) / progressEvent.total ) )
|
|
|
|
}
|
|
|
|
}
|
|
|
|
).then(results => {
|
2020-01-02 17:26:55 -08:00
|
|
|
this.uploadPercentage = 0
|
2019-12-19 21:50:50 -08:00
|
|
|
this.file = null
|
|
|
|
console.log('SUCCESS!!');
|
|
|
|
|
|
|
|
console.log('File upload results')
|
|
|
|
console.log(results.data)
|
|
|
|
|
|
|
|
const name = results.data.fileName
|
|
|
|
const location = results.data.fileLocation
|
|
|
|
|
|
|
|
if(name && location){
|
|
|
|
|
|
|
|
const imageCode = `<img alt="yup" height="200px" src="/api/static/${location}">`
|
|
|
|
|
|
|
|
//put cursor at the bottom of the window
|
|
|
|
tinyMCE.activeEditor.selection.select(tinyMCE.activeEditor.getBody(), true);
|
|
|
|
tinyMCE.activeEditor.selection.collapse(false);
|
|
|
|
tinymce.activeEditor.execCommand('mceInsertContent', false, imageCode)
|
|
|
|
}
|
|
|
|
|
|
|
|
//try and stick that file into the active editor
|
|
|
|
// tinyMCE.execCommand(
|
|
|
|
// 'mceInsertContent',
|
|
|
|
// false,
|
|
|
|
// '<img alt="Smiley face" height="42" width="42" src="' + src + '"/>'
|
|
|
|
// );
|
|
|
|
|
|
|
|
})
|
|
|
|
.catch(results => {
|
2020-01-02 17:26:55 -08:00
|
|
|
this.uploadPercentage = 0
|
2019-12-19 21:50:50 -08:00
|
|
|
console.log('FAILURE!!');
|
|
|
|
})
|
|
|
|
},
|
|
|
|
handleFileUpload() {
|
|
|
|
//Grab file and push note id to into data
|
|
|
|
this.file = this.$refs.file.files[0]
|
|
|
|
|
|
|
|
console.log('>>>> 1st element in files array >>>> ')
|
|
|
|
console.log(this.file)
|
|
|
|
|
|
|
|
if(this.file){
|
|
|
|
this.uploadFileToServer()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|