- return response()->stream(function () use ($stream) {
-
- // End & flush the output buffer, if we're in one, otherwise we still use memory.
- // Output buffer may or may not exist depending on PHP `output_buffering` setting.
- // Ignore in testing since output buffers are used to gather a response.
- if (!empty(ob_get_status()) && !app()->runningUnitTests()) {
- ob_end_clean();
- }
-
- fpassthru($stream);
- fclose($stream);
- }, 200, $this->getHeaders($fileName));
+ $rangeStream = new RangeSupportedStream($stream, $fileSize, $this->request);
+ $headers = array_merge($this->getHeaders($fileName, $fileSize), $rangeStream->getResponseHeaders());
+ return response()->stream(
+ fn() => $rangeStream->outputAndClose(),
+ $rangeStream->getResponseStatus(),
+ $headers,
+ );