2016-04-10 2 views
0

Как получить файлы, находящиеся в хранилище?Laravel Фасад хранения и извлечение файлов

Я построил маршрут и направил его на [email protected]. Метод ниже

public function myMethod() 
{ 
    $validPath = 'valid-path-inside-local-storage'; 
    $file = Storage::disk(env('STORAGE_TO_USE','local'))->get($validPath); 
    return $file; 
} 

Но я получаю тарабарщину, возможно, необработанные данные. Как заставить браузер отображать изображение, если файл является образом изображения или загрузить его, если файл, скажем, a.xls?

ответ

0
$validPath = 'valid-path-inside-local-storage'; 
    $mimeType = Storage::mimeType($validPath); 
    $file = Storage::disk(env('STORAGE_TO_USE','local'))->get($validPath); 
    return (new Response($file, 200)) 
     ->header('Content-Type', $mimeType); 

Надеюсь, я ничего не пропустил.

0

Для вашего маршрута определяют следующим образом:

Route::get('docs/{file}', '[email protected]'); 

И это ваш контроллер

class DocumentController extends BaseController 
{ 
    public function getDoc($file){ 
     $path = 'pathToDirectory/'.$file; 
     if(Storage::disk('yourDisk')->exists($path)){ 
     $attachment = Storage::disk('yourDisk')->get($path); 
     $type = Storage::disk('yourDisk')->mimeType($path); 
     return Response::make($attachment, 200)->header("Content-Type", $type); 
     }else{ 
     return Response::json('This file does not exists.'); 
     } 
    } 
}