Laravel - 从存储中检索文件以供下载

时间:2016-04-21 12:11:07

标签: php laravel

我在控制器中编写了以下方法,该方法遍历文件夹中的所有文件并返回:

$ files =存储::文件($ gallery);

public function showGallery($gallery)
    {
        $gallery = base64_decode($gallery);
        $gallery_name = explode('/', $gallery);

        $directories = Storage::directories($gallery);

        $galleries = $gallery_name;
        unset($galleries[0]);
        unset($galleries[1]);
        array_pop($galleries);

        $files = Storage::files($gallery);

        $locations = array();
        foreach ($files as $file) 
        {
            if($this->is_image($file)) 
            {
                $locations[] = Image::make(storage_path('app/' . $file))->encode( 'data-url' );
            } else 
            {
                $locations[] = storage_path('app/' . $file);
            }
        }

        //dd($locations);

        $data = [
            'directories'   => $directories,
            'galleries'     => $galleries,
            'gallery_path'  => $gallery,
            'gallery_name'  => end($gallery_name),
            'locations'     => $locations,
        ];

        return view('private.user.gallery', $data);
    }

在此之后,我将图像与其他文件类型分开。

我正在使用干预图像库使图像公开可见。

但是在显示PDF,doc,mov文件等其他文件(如图标)时我会陷入困境。

当我点击前端的那些图标时,我收到此错误。

链接: http://lamotte.local/home/vagrant/projects/lamotte/storage/app/gallery/Brand/pdf-test.pdf

RouteCollection.php第161行中的NotFoundHttpException:

这些文件存储的原因是因为这些文件需要通过登录系统进行访问控制。

是否有可以处理此问题的库?

1 个答案:

答案 0 :(得分:0)

我过去多次做过的事情是使用readfile()

将文件传输给用户

希望它有所帮助!