【问题标题】:Laravel 5.6 Storage::download file not foundLaravel 5.6 Storage::download 文件未找到
【发布时间】:2018-05-24 07:26:43
【问题描述】:

我使用的是 Laravel 5.6,filesystems.php 配置默认。

上传文件后,我在我的数据库中记录了路径列,其中记录了路径,例如 - posts/p4NbvgcxHFcT10TwbS2UUJrajifPcqpN3i7iSyyk.png

符号链接已创建,文件存储在公共目录中。

 $path = $file->store('posts', 'public');

这个路径是数据库的记录器,如果我想显示例如图片,我可以通过以下方式访问它:

{{ asset('/storage/'.$file->path) }}

但是当我尝试强制下载时,它会出现异常 - FileNotFoundException 在路径中找不到文件:

文件下载方式:

  public function downloadFile($id){
    $file = File::find($id);

    //return Storage::download(storage_path()."/app/public/".$file->path, $file->original_name);
    //also tried like this
    return Storage::download(asset('storage/'.$file->path), $file->original_name);
}

在 Windows 操作系统上运行的应用程序

【问题讨论】:

  • 什么返回 $file->path 属性?尝试将其转储到 downloadFile 方法中
  • {{ asset('/storage/'.$file->path) }}asset('storage/'.$file->path) 可能不一样
  • dd(asset('/storage/'.$file->path),asset('storage/'.$file->path));结果是一样的。 $file->path 返回路径,如posts/p4NbvgcxHFcT10TwbS2UUJrajifPcqpN3i7iSyyk.png

标签: php laravel download storage


【解决方案1】:

解决方案是:return Storage::disk('public')->download($file->path);

【讨论】:

  • 感谢您的解决方案功能! Como comentario adicional, public deberá ser cambiado por el repositorio que se esté manejando como aws o digitalocean.
【解决方案2】:

试试这个:

return Storage::download(storage_path('app/public/'.$file->path), $file->original_name);

【讨论】:

  • 不,同样的错误。但是 storage_path('app/public/'.$file->path) 给出了文件的正确路径。如果我写入从此代码返回的资源管理器路径,我可以访问文件,但 Storage::download 看不到此文件。
【解决方案3】:

如果您使用asset(),您将为所选目录调用文件。如果您可以调用存储文件夹上的文件,请使用Storage::class facade

【讨论】:

    猜你喜欢
    • 2018-12-16
    • 1970-01-01
    • 2020-07-10
    • 2019-04-05
    • 2019-04-21
    • 1970-01-01
    • 2021-01-18
    • 2018-10-27
    • 2021-11-10
    相关资源
    最近更新 更多