Laravel存储不能强制下载文件



我想让用户从存储路径下载一些文件。在这种情况下,将是他们所做的一些备份。所以我有一个方法可以创建备份,并显示在vue js表。现在我正试着从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控制器
public function downloadBackups($path)
{
$Filepath = storage_path('app/Backup/'.$path);
if (file_exists($Filepath)) {
return Response::download($Filepath);
}
}

但这不起作用,在响应我得到这样的东西

PK�.�&_���vt�8̩��....

我也尝试过这种https://stackoverflow.com/questions/48534837/how-to-download-zip-file-through-browser-laravel方法,但不适合我

您正在尝试通过AJAX下载文件。可能更容易将链接a与下载路径设置为href:

<tr v-show="backups.length" v-for="backup in backups" :key="backup.id">
<td>{{backup.path}}</td>
<td>{{backup.size}} KB</td>
<td>
<a :href="`/download-backup-system/` + backup.path">
Download <i class="fa-solid fa-download"></i>
</a>
</td>
</tr>

我刚开始从存储器下载文件时也遇到了问题。我是这样解决的

我做了一个Crud,并为每一行添加了一个下载按钮。当点击这个按钮时,进入了我的控制器中带有(fileId)的自定义函数。

public function download(Request $request, int $fileId)
// $fileId is the id from the download button
{
$fullfile = File::find($fileId);
$downloadfile = File::find($fullfile, ['file'])->pluck('file')->last();
return response()->download($downloadfile);
}

相关内容

  • 没有找到相关文章

最新更新