I want to let user to download some file from storage path. In this case will be some backups they have made. So i have a method can create backups and show on vue js table. And now i am trying to downlaod manyally from vue
<tr v-show="backups.length" v-for="backup in backups" :key="backup.id">
<td>{{backup.path}}</td>
<td>{{backup.size}} KB</td>
<td>
<v-button type="sm-secondary" title="Download" @click="downloadBackup(backup.path)">
<i class="fa-solid fa-download"></i>
</v-button>
</td>
</tr>
methods: {
downloadBackup(path) {
axios.get('/download-backup-system/'+path)
.then(response => {
console.log(response)
})
.catch(error => {
console.log(error)
})
}
}
//dd($Filepath);
//RETURN
//"C:...storageapp/Backup/2022-11-28-10-21-27.zip"
Laravel controller
public function downloadBackups($path)
{
$Filepath = storage_path('app/Backup/'.$path);
if (file_exists($Filepath)) {
return Response::download($Filepath);
}
}
But this does not work and on response i get something like this
PK�.�&_���vt�8̩��....
Also i have tryed this https://stackoverflow.com/questions/48534837/how-to-download-zip-file-through-browser-laravel
method, but does not work for me
2
Answers
i also had a problem at first with downloading files from the storage. i solved it this way
i made a Crud, And foreach row i added a Download button. When clicked this button went to a custom function in my controller with the (fileId).
You’re trying to download a file through AJAX. Its probably easier to make a link
a
with the download path ashref
: