2016-04-21 3 views
0

Я написал следующий метод внутри контроллера, который проходит через все файлы в папке и возвращает эти:Laravel - Извлечение файлов из хранилища для загрузки

$ файлов = Хранение :: файлы ($ галереи) ;

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); 
    } 

После этого я отделяя изображения из файлов других типов.

Я использую библиотеку Intervention Image, чтобы сделать Images общедоступными и доступными для просмотра.

Однако я застреваю при отображении других файлов (в виде значков), таких как файлы PDF, doc, mov.

Когда я нажимаю на эти значки в интерфейсе, я получаю эту ошибку.

ссылка: http://lamotte.local/home/vagrant/projects/lamotte/storage/app/gallery/Brand/pdf-test.pdf

NotFoundHttpException в RouteCollection.php линии 161:

Причина эти файлы находятся в хранилище, потому что эти файлы должны быть контролируемым доступом через систему авторизации.

Есть ли библиотека, которая может справиться с этим?

ответ

0

То, что я много раз делал в прошлом это поток файла пользователя с помощью readfile()

Надеется, что это помогает!

Смежные вопросы