My component vue is like this :
<template>
<div class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<form method="post" :action="baseUrl+'/product/editImage'" enctype="multipart/form-data">
...
<input type="file" v-on:change="changeImage" name="image" id="image" required>
...
</form>
</div>
</div>
</div>
</template>
<script>
export default{
...
methods: {
changeImage(e) {
data = new FormData();
data.append('file', $('#image')[0].files[0]);
var imgname = $('#image').val();
var size = $('#image')[0].files[0].size;
var ext = imgname.substr( (imgname.lastIndexOf('.') +1) );
if(ext=='jpg' || ext=='jpeg' || ext=='png' || ext=='gif' || ext=='PNG' || ext=='JPG' || ext=='JPEG') {
if(size<=5000000) {
$.ajax({
url: window.Laravel.baseUrl+'/product/addImage',
type: "POST",
data: data,
enctype: 'multipart/form-data',
processData: false, // tell jQuery not to process the data
contentType: false // tell jQuery not to set contentType
}).done(function(data) {
if (!$.trim(data)) {
alert('No response');
}
else {
var files = e.target.files || e.dataTransfer.files
if (!files.length)
return;
this.createImage(files[0])
this.imageChanged = files[0]
$('#image').val(data);
}
});
return false;
}
else {
alert('Sorry File size exceeding from 5 Mb');
$('#image').val('');
}
}
else {
alert('Sorry Only you can uplaod JPEG|JPG|PNG|GIF file type ');
}
},
createImage(file) {
var image = new Image()
var reader = new FileReader()
var vm = this
reader.onload = (e) => {
vm.image = e.target.result
};
reader.readAsDataURL(file)
},
}
}
</script>
I still use javascript in vue.js 2. because i am still confused when using vue.js as a whole
When I upload image, there exist error like this :
Uncaught ReferenceError: data is not defined
Seems data = new FormData(); not working on the vue.js
I had try it use javascript and it works
But when I implement it to vue.js, it does not work
How can I solve the problem?