使用Storage::download()时无法获取文件大小的错误求助
Laravel Storage::download() 报错:无法获取文件大小的解决方法
当调用Storage::download(...)方法时,出现错误:
Unable to retrieve the file_size for file at location:
.
解决步骤
检查文件路径正确性
确认传入的路径是对应存储磁盘的相对路径,比如使用Storage::disk('public')->download('docs/report.pdf'),而非服务器绝对路径。同时注意系统大小写(Linux环境下路径区分大小写),避免拼写错误。验证文件存在性与访问权限
先用Storage::exists($path)判断文件是否存在;若为本地存储,确保Web服务器(如Nginx/Apache)拥有该文件的读取权限;若为云存储(如S3),检查存储桶权限配置,确保服务端具备文件读取权限。云存储环境额外排查
若使用S3等云存储,确认Laravel与对应SDK版本兼容;部分云存储存在文件同步延迟,可等待片刻后重试。临时替代方案
若以上方法无效,可手动获取文件信息后用响应方法实现下载:
本地存储示例:$localPath = storage_path('app/public/your-file.pdf'); return response()->download($localPath, '自定义文件名.pdf', [ 'Content-Length' => filesize($localPath) ]);云存储(S3)示例:
$disk = Storage::disk('s3'); $fileContent = $disk->get($path); return response($fileContent, 200, [ 'Content-Type' => $disk->mimeType($path), 'Content-Length' => $disk->size($path), 'Content-Disposition' => "attachment; filename=\"".basename($path)."\"" ]);
内容的提问来源于stack exchange,提问作者ELWAHAB
相关产品推荐
相关产品推荐

