Laravel 存储文件未下载(未找到文件)
Posted
技术标签:
【中文标题】Laravel 存储文件未下载(未找到文件)【英文标题】:Laravel Storage File not downloading (File not found) 【发布时间】:2022-01-15 03:56:45 【问题描述】:在我的 laravel 项目中,我有上传文件夹,我试图从那里下载文件。
文件夹层次结构:
-Project
--Public
---Storage (created using php artisan storage:link)
----uploads
-----file.jpg ( i am trying to download)
控制器:
public function getdata(Request $request)
return Storage::download('/storage/uploads'.$image_name);
//image name is file.jpg
错误:
File not found at path: storage/uploads["file.jpg"]
【问题讨论】:
你是怎么得到这个$image_name
变量的?
$image_name = Files::select('file_name')->where('custom_code', $request->id)->first();
【参考方案1】:
在路径中找不到文件:storage/uploads["file.jpg"]
[]
这显示您在path
中传递数组,并且/
在上传
您的路径应该如下所示
storage/uploads/file.jpg
以上实现后,您的代码将如下所示
Storage::download('/storage/uploads/'.$image_name);
从数据库中获取图片
$image_name = Files::select('file_name')->where('custom_code', $request->id)->first();
您可以使用->first()
和可使用$image_name->file_name
访问的图像列
以你的方式$image_name[0]
访问。
【讨论】:
为什么它返回数组。我的控制器是: $image_name= Files::where('custom_code','=',$request->id)->pluck('file_name'); return Storage::download('/storage/uploads/'.$image_name); 更新答案.. 在路径找不到文件:storage/uploads/"file_name":"file.jpg"【参考方案2】:你应该做的是这样的:
public function getdata(Request $request)
return Storage::download("uploads/" . $image_name['file_name']);
参考: https://laravel.com/docs/8.x/filesystem#downloading-files
【讨论】:
在路径中找不到文件:uploads/"file_name":"file.jpg" 等等,你的 $image_name 是一个数组?? 127.0.0.1:8000/api/get-data/437121 我正在尝试像这样下载它 437121 代表什么?? 该文件的 ID/名称【参考方案3】:你可以这样做
return Storage::disk('public')->download('uploads/'. $image_name);
【讨论】:
突出显示的错误:未定义的方法“下载”。 你确定要实现'Storage'类吗?使用 Illuminate\Support\Facades\Storage; 是:使用 Illuminate\Support\Facades\Storage;已添加以上是关于Laravel 存储文件未下载(未找到文件)的主要内容,如果未能解决你的问题,请参考以下文章