public static function getDownloadResponse($document)
{
$direct_url = $document->getDirectUrl();
if ($direct_url) {
return redirect($direct_url);
}
$stream = $document->getStream();
if ($stream) {
$headers = ['Content-Type' => Document::$types[$document->type]['mime'], '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::$types[$document->type]['mime']);
}
return $response;
}
/** * @param DocumentRequest $request * * @return \Illuminate\Http\Response|\Redirect|\Symfony\Component\HttpFoundation\StreamedResponse */ public function show(DocumentRequest $request) { $document = $request->entity(); if (array_key_exists($document->type, Document::$types)) { return DocumentController::getDownloadResponse($document); } else { return $this->errorResponse(['error' => 'Invalid mime type'], 400); } }