fix: direct streaming with PHP not working for Safari (#1630)

This commit is contained in:
Phan An 2022-12-15 21:49:49 +07:00 committed by GitHub
parent 66e1ee411c
commit cb84f14f34
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -19,8 +19,13 @@ class PhpStreamer extends Streamer implements DirectStreamerInterface
public function stream(): void
{
try {
$rangeSet = RangeSet::createFromHeader(get_request_header('Range'));
$resource = new FileResource($this->song->path);
$rangeHeader = get_request_header('Range');
// On Safari, "Range" header value can be "bytes=0-1" which breaks streaming.
$rangeHeader = $rangeHeader === 'bytes=0-1' ? 'bytes=0-' : $rangeHeader;
$rangeSet = RangeSet::createFromHeader($rangeHeader);
$resource = new FileResource($this->song->path, mime_content_type($this->song->path));
(new ResourceServlet($resource))->sendResource($rangeSet);
} catch (InvalidRangeHeaderException) {
abort(Response::HTTP_BAD_REQUEST);