diff --git a/app/Http/Controllers/DocumentController.php b/app/Http/Controllers/DocumentController.php index d19909bae0ad..4bd9be884696 100644 --- a/app/Http/Controllers/DocumentController.php +++ b/app/Http/Controllers/DocumentController.php @@ -38,10 +38,23 @@ class DocumentController extends BaseController return redirect($direct_url); } + $stream = $document->getStream(); - $response = Response::make($document->getRaw(), 200); - $response->header('content-type', $document->type); - + if($stream){ + $headers = [ + 'Content-Type' => $document->type, + 'Content-Length' => $document->size, + ]; + + $response = Response::stream(function() use ($stream) { + fpassthru($stream); + }, 200, $headers); + } + else{ + $response = Response::make($document->getRaw(), 200); + $response->header('content-type', $document->type); + } + return $response; } diff --git a/app/Models/Document.php b/app/Models/Document.php index 2d61cb7e3ba6..aeff8099e5d7 100644 --- a/app/Models/Document.php +++ b/app/Models/Document.php @@ -122,6 +122,12 @@ class Document extends EntityModel return $disk->get($this->path); } + public function getStream(){ + $disk = $this->getDisk(); + + return $disk->readStream($this->path); + } + public function getRawPreview(){ $disk = $this->getDisk();