下载存储文件时无法检索文件的 file_size - Laravel

Fai*_*mal 5 php storage path laravel flysystem

只是一个简单的问题。

尝试下载存储文件,但无法从存储文件夹下载文件。

在谷歌上搜索过。找到了两种下载存储文件的方法。两者都尝试过但没有成功。

return response()->download(storage_path("app\public\uploads\1662531990_Dropshipping.docx"));
Run Code Online (Sandbox Code Playgroud)
return Storage::disk('public')->download("app\public\uploads\1662531990_Dropshipping.docx", "1662531990_Dropshipping");
Run Code Online (Sandbox Code Playgroud)

是的,上面给出的文件存在于给定路径中。下面是该目录和错误屏幕的屏幕截图。

我认为,它与以下相关的软件包有关flysystem,因为composer show

league/config                      v1.1.1  Define configuration arrays with strict schemas an...   
league/flysystem                   3.2.1   File storage abstraction for PHP
league/flysystem-aws-s3-v3         3.0.0   AWS S3 filesystem adapter for Flysystem.
league/mime-type-detection         1.11.0  Mime-type detection for Flysystem
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述

小智 0

从 Laravel 9 的存储中下载文件的最简单方法是使用文档中所示的下载方法。

return Storage::download('file.jpg');
 
return Storage::download('file.jpg', $name, $headers);
Run Code Online (Sandbox Code Playgroud)

下面是我用来下载 pdf 的代码示例:

public function download(Publication $publication){
    //Path from the local storage directory (./storage/app/)
    $path = $publication->file_path;
    
    //Name of the file the user will see
    $slug = Str::slug($publication->title).'.pdf';

    $headers = [
        'Content-Type' => 'application/pdf',
     ];

     return Storage::download($path, $slug, $headers);
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!