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 存储文件未下载(未找到文件)的主要内容,如果未能解决你的问题,请参考以下文章

Laravel webwizo 简码包 Shortcodes 类未找到

未找到 Laravel 引导文件

laravel下载响应文件名未更改

如何安装Laravel框架

未找到 Laravel 视图 5.2

Laravel Forge:未找到存储库