You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 9中如何强制下载文件?已存public目录但无法下载

问题解决:Laravel中无法下载public存储目录下的.exe文件

你的问题出在Storage::download()的参数使用错误,原因如下:

  • Storage facade 默认使用public磁盘,该磁盘的根目录对应storage/app/public,它接收的是相对路径,而非绝对路径
  • 你传入的$path是通过storage_path()生成的绝对路径,这会导致Storage在错误的位置查找文件

修正方案

直接使用相对于public磁盘的文件路径即可,有两种写法:

写法一:默认使用public磁盘

public function Downloadfile(Request $request)
{
    Log::debug("DOWNLOADFILE");
    $file = 'file.exe';
    // 直接传入相对路径
    return Storage::download($file);
}

写法二:显式指定磁盘(更清晰)

public function Downloadfile(Request $request)
{
    Log::debug("DOWNLOADFILE");
    $file = 'file.exe';
    return Storage::disk('public')->download($file);
}

额外说明

如果非要用绝对路径下载,也可以用response()->download(),但不推荐(不符合Laravel的存储规范):

return response()->download(storage_path('app/public/file.exe'));

内容的提问来源于stack exchange,提问作者Marshal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:01:06