OLD | NEW |
---|---|
1 <?php | 1 <?php |
2 | 2 |
3 $fileName = $_GET["name"]; | 3 $fileName = $_GET["name"]; |
4 $type = $_GET["type"]; | 4 $type = $_GET["type"]; |
5 | 5 |
6 $fileSize = filesize($fileName); | 6 $fileSize = filesize($fileName); |
7 $start = 0; | 7 $start = 0; |
8 $end = $fileSize - 1; | 8 $end = $fileSize - 1; |
9 $contentRange = $_SERVER["HTTP_RANGE"]; | 9 $contentRange = $_SERVER["HTTP_RANGE"]; |
10 if (isset($contentRange)) { | 10 if (isset($contentRange) && empty($_GET["norange"])) { |
11 $range = explode("-", substr($contentRange, strlen("bytes="))); | 11 $range = explode("-", substr($contentRange, strlen("bytes="))); |
12 $start = intval($range[0]); | 12 $start = intval($range[0]); |
13 if (!empty($range[1])) | 13 if (!empty($range[1])) |
14 $end = intval($range[1]); | 14 $end = intval($range[1]); |
15 $httpStatus = "206 Partial Content"; | 15 $httpStatus = "206 Partial Content"; |
16 } else | 16 } else |
17 $httpStatus = "200 OK"; | 17 $httpStatus = "200 OK"; |
18 | 18 |
19 header("Status: " . $httpStatus); | 19 header("Status: " . $httpStatus); |
20 header("HTTP/1.1 " . $httpStatus); | 20 header("HTTP/1.1 " . $httpStatus); |
21 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); | 21 header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); |
22 header("Pragma: no-cache"); | 22 header("Pragma: no-cache"); |
23 header("Etag: " . '"' . $fileSize . "-" . filemtime($fileName) . '"'); | 23 header("Etag: " . '"' . $fileSize . "-" . filemtime($fileName) . '"'); |
24 header("Content-Type: " . $type); | 24 header("Content-Type: " . $type); |
25 header("Accept-Ranges: bytes"); | |
26 header("Content-Length: " . ($end - $start) + 1); | 25 header("Content-Length: " . ($end - $start) + 1); |
27 if ($contentRange) | 26 if ($contentRange && empty($_GET["norange"])) { |
28 » » header("Content-Range: bytes " . $start . "-" . $end . "/" . $fi leSize); | 27 header("Accept-Ranges: bytes"); |
28 » » header("Content-Range: bytes " . $start . "-" . $end . "/" . $fi leSize); | |
philipj_slow
2014/10/01 10:47:18
Can you replace the tabs with spaces? You didn't a
DaleCurtis
2014/10/07 23:27:58
Done.
| |
29 } | |
29 header("Connection: close"); | 30 header("Connection: close"); |
30 | 31 |
31 $chunkSize = 1024 * 256; | 32 $chunkSize = 1024 * 256; |
32 $offset = $start; | 33 $offset = $start; |
33 | 34 |
34 $fn = fopen($fileName, "rb"); | 35 $fn = fopen($fileName, "rb"); |
35 fseek($fn, $offset, 0); | 36 fseek($fn, $offset, 0); |
36 | 37 |
37 while (!feof($fn) && $offset <= $end && connection_status() == 0) { | 38 while (!feof($fn) && $offset <= $end && connection_status() == 0) { |
38 $readSize = min($chunkSize, ($end - $offset) + 1); | 39 $readSize = min($chunkSize, ($end - $offset) + 1); |
39 $buffer = fread($fn, $readSize); | 40 $buffer = fread($fn, $readSize); |
40 print($buffer); | 41 print($buffer); |
41 flush(); | 42 flush(); |
42 $offset += $chunkSize; | 43 $offset += $chunkSize; |
43 } | 44 } |
44 fclose($fn); | 45 fclose($fn); |
45 | 46 |
46 exit; | 47 exit; |
47 ?> | 48 ?> |
OLD | NEW |