Skip to content

Works without Range #6

@let-aurn

Description

@let-aurn

The initial code works well on desktop (Chrome OSX). But not on Safari (iOS).

I've comment out all about Range and now it works on iPhone too.

I did that because I've inspected requests on Chrome (desktop) and it seems it doesn't even use Ranges. Response is just 200 OK instead of 206 using Chrome on OSX.

Anyway, here is my current working code for Safari/Chrome on iOS (not tested on Android) :

$begin = 0;
$end = $size - 1;

// if (isset($_SERVER['HTTP_RANGE'])) {
//     if (preg_match('/bytes=\h*(\d+)-(\d*)[\D.*]?/i', $_SERVER['HTTP_RANGE'], $matches)) {
//         $begin = intval($matches[1]);
//         if (!empty($matches[2])) {
//             $end = intval($matches[2]);
//         }
//     }
// }
// if (isset($_SERVER['HTTP_RANGE'])) {
//     header('HTTP/1.1 206 Partial Content');
// } else {
    header('HTTP/1.1 200 OK');
// }

header("Content-Type: audio/mpeg");
header('Cache-Control: public, must-revalidate, max-age=0');
header('Pragma: no-cache');
header('Accept-Ranges: bytes');
header('Content-Length:' . (($end - $begin) + 1));
// if (isset($_SERVER['HTTP_RANGE'])) {
//     header("Content-Range: bytes $begin-$end/$size");
// }
header("Content-Disposition: inline; filename=file.mp3");
header("Content-Transfer-Encoding: binary");
header("Last-Modified: $time");

\Log::info("=======");
\Log::info("Media : " . $location);
\Log::info("Range: " . (isset($_SERVER['HTTP_RANGE']) ? "Accepted" : "Not accepted"));
\Log::info("=======");

$cur = $begin;
fseek($fm, $begin, 0);

while (!feof($fm) && $cur <= $end && (connection_status() == 0)) {
    print fread($fm, min(1024 * 16, ($end - $cur) + 1));
    $cur += 1024 * 16;
}

PS : The code above doesn't work on Safari Desktop (works on Chrome desktop)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions