【问题标题】:Laravel 5.5 get file after uploading with StorageLaravel 5.5 使用存储上传后获取文件
【发布时间】:2018-12-03 03:11:42
【问题描述】:

在我的 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 模板中显示文件?我搜索了网络,但没有结果。

【问题讨论】:

    标签: php laravel storage laravel-5.5


    【解决方案1】:

    您可以通过两种方式访问​​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);
      });
      

    【讨论】:

    • 你的意思是,如果我的文件不是公开的,我需要打开路由来调用它们为 src="file_path" 吗??
    【解决方案2】:

    你可以使用这样的方法,

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

    我希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 2018-07-16
      • 2018-05-03
      • 2017-01-16
      • 2018-02-16
      • 1970-01-01
      • 2018-06-18
      相关资源
      最近更新 更多