如何从 Laravel 8 中的存储应用程序文件夹下载文件

Posted

技术标签:

【中文标题】如何从 Laravel 8 中的存储应用程序文件夹下载文件【英文标题】:How to download file from storage app folder in Laravel 8 【发布时间】:2022-01-05 14:27:26 【问题描述】:

我想从 Storage/app/public 文件夹下载一个文件。

不知何故,如果没有任何错误消息,它就无法工作。

下面是我试过的代码。

web.php

Route::get('/viewAllFile',[DownloadController::class, 'downfunc']);
Route::post('download/id',[DownloadController::class, 'download']);

下载控制器.php

class DownloadController extends Controller

    public function downfunc()
    
        $downloads = DB::table('files')->get();
        return view('download.viewfile', compact('downloads'));
    

    public function download($file_name)
    
        //Storage::disk('local')->put('example.txt', 'Contents');
        $file = Storage::disk('public')->get($file_name);
        $filepath = storage_path("app/$data->file");
        
        return \Response::download($filepath);
    

viewfile.blade.php

@foreach($downloads as $down)
    <tr>
        <td>$down -> name</td>
        <td>$down -> directory</td>
        <td>$down -> updated_at</td>
        <td>
            <a href="url('/download/'.$down->name)" download="$down-> name">
                <button type="button" class="btn btn-primary">Download</button>
            </a>
        </td>
    </tr>
@endforeach

【问题讨论】:

所有可下载的文件都在storage/app/public 目录的根目录下还是有些嵌套? 请参考***.com/q/20415444/4650866 都保存在storage/app/public/hi目录下 【参考方案1】:

首先,您必须运行以下命令:

php artisan storage:link

例如:

Route::get('/download', function ()
    return Storage::download('public/file_name.png');
);

You can find documentation here

【讨论】:

以上是关于如何从 Laravel 8 中的存储应用程序文件夹下载文件的主要内容,如果未能解决你的问题,请参考以下文章

Laravel DOMPDF:如何从存储文件夹加载图像?

如何从 Laravel 8 Jetstream 注册页面中的数据库中获取数据?

如何通过 laravel 8 惯性中的模型访问关系

如何将值从数据库中的laravel存储到数组中?

如何从 Laravel 8 Eloquent 中的嵌套关​​系中获取数据?

如何从 Laravel 8 中的自定义 Web 路由中删除“api/”前缀?