Laravel 9中如何强制下载文件?已存public目录但无法下载
问题解决:Laravel中无法下载public存储目录下的.exe文件
你的问题出在Storage::download()的参数使用错误,原因如下:
Storagefacade 默认使用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
相关产品推荐
相关产品推荐

