Laravel 5.5使用存储空间上传后获取文件

时间:2018-06-24 08:46:26

标签: php laravel storage laravel-5.5

在我的Laravel 5.5项目中,显示上传的文件时遇到问题。我使用存储上传了文件。控制器的存储动作部分如下所示。

        if ($request->hasFile('content_uz'))
        {
            $path = $request->file('content_uz')->store('/content/lesson'.$topic->lesson->id.'/topic'.$topic->id);
            $data->content_uz = $path;
        }
        if ($request->hasFile('content_ru'))
        {
            $path = $request->file('content_ru')->store('/content/lesson'.$topic->lesson->id.'/topic'.$topic->id);
            $data->content_ru = $path;
        }

上传成功。上载“ content_uz”文件的路径存储为“ storage / app / content / lesson2 / topic3”路径,content_uz列存储在我的数据库中,如下所示:

  

content \ lesson2 \ topic3 \ WSjrlG9a1ermGDOvRJTjn9iEIhfFvhVzjaOs6l79.mp4

如何在Blade模板中显示文件?我在网上搜索,但没有结果。

2 个答案:

答案 0 :(得分:1)

您可以使用这样的方法

public function showFile() {
    header("Content-type: video/mp4");
    return Storage::get($filePath);
}

我希望这会有所帮助。

答案 1 :(得分:0)

您可以通过两种方式访问​​storage目录中的文件。

  1. 如果您的文件可以公开访问,则可以遵循laravel public disk

  2. 如果文件是受保护的或私有的,则可以声明访问文件的路径。

    Route::get('content/{lesson}/{topic}/{file}', function($lesson, $topic, $file) 
    {
        //Check access logic
    
        $filePath = '/content/' . $lesson . '/' . $topic . '/' . $file;
    
        return Storage::get($filePath);
    });