-
-
Save amitavroy/a5b88533e3428bf0bd7fc5e91a93e896 to your computer and use it in GitHub Desktop.
<template> | |
<div class="container"> | |
<div class="row justify-content-center"> | |
<div class="col-md-8"> | |
<div class="card card-default"> | |
<div class="card-header">Example Component</div> | |
<div class="card-body upload-file-wrapper"> | |
<input | |
type="file" | |
name="file" | |
ref="file" | |
multiple | |
v-on:change="handleFileUpload" | |
> | |
<button class="btn btn-primary" @click="handleButtonClick" v-text="buttonTxt" /> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</template> | |
<script> | |
export default { | |
data() { | |
return { | |
buttonTxt: 'Upload' | |
} | |
}, | |
methods: { | |
handleButtonClick(event) { | |
this.$refs.file.click(); | |
}, | |
handleFileUpload(event) { | |
this.buttonTxt = 'Uploading...'; | |
let files = this.$refs.file.files; | |
let formData = new FormData(); | |
let headers = {'Content-Type': 'multipart/form-data'}; | |
for (let i = 0; i < files.length; i++) { | |
formData.append('files[' + i + ']', files[i]); | |
} | |
formData.append('_hidden', 'Amitav Roy'); | |
window.axios.post('/file/upload', formData, headers) | |
.then(response => { | |
console.log('response', response); | |
event.target.value = null; | |
setTimeout(() => { | |
this.buttonTxt = 'Upload'; | |
}, 400); | |
}) | |
.catch(error => console.error('error uploading file', error.response)); | |
} | |
} | |
} | |
</script> | |
<style lang="scss" scoped> | |
.upload-file-wrapper { | |
input[type=file] { | |
display: none; | |
} | |
} | |
</style> |
Route::post('/file/upload', function(Request $request) { | |
$files = $request->file('files'); | |
foreach ($files as $file) { | |
$filename = $file->getClientOriginalName(); | |
$file->storeAs('/uploads', $filename); | |
} | |
return response()->json([], 201); | |
}); |
I saw your video- https://www.youtube.com/watch?v=9B-xriETQ9M, You are using php, vue and laravel in this project. Actually, i am also doing image upload in vuejs but in above code you are calling php in line no.47- window.axios.post('/file/upload', formData, headers) , in my scenario i am not using php with vuejs. In vuejs $file->storeAs('/uploads', $filename) - storeAs is not function in Vuejs, it is use in php.
I am doing image upload, when i upload the image that image can transfer to local drive (absolute)path to the project's folder path in vuejs. actually i want image path , that path i am giving backend and backend person are access that image path and copy to according use. I have tried multer and fs-extra npm packge for upload image move local drive to another folder(inside project folder) but these libaries not working.
What do you mean by PHP inside Vue? I didn't understand that.
Please explain, based on that I will definitely try to solve your query