3 回答

TA貢獻1789條經(jīng)驗 獲得超8個贊
Accept-Ranges: bytes
Range: bytes=x-y
x
y
x
y
- x
HTTP/1.0 206 Partial Content
.
$filesize = filesize($file);$offset = 0;$length = $filesize;if ( isset($_SERVER['HTTP_RANGE']) ) { // if the HTTP_RANGE header is set we're dealing with partial content $partialContent = true; // find the requested range // this might be too simplistic, apparently the client can request // multiple ranges, which can become pretty complex, so ignore it for now preg_match('/bytes=(\d+)-(\d+)?/', $_SERVER['HTTP_RANGE'], $matches); $offset = intval($matches[1]); $length = intval($matches[2]) - $offset;} else { $partialContent = false;}$file = fopen($file, 'r'); // seek to the requested offset, this is 0 if it's not a partial content requestfseek($file, $offset); $data = fread($file, $length);fclose($file);if ( $partialContent ) { // output the right headers for partial content header('HTTP/1.1 206 Partial Content'); header('Content-Range: bytes ' . $offset . '-' . ($offset + $length) . '/' . $filesize);} // output the regular HTTP headersheader('Content-Type: ' . $ctype); header('Content-Length: ' . $filesize);header('Content-Disposition: attachment; filename="' . $fileName . '"');header('Accept-Ranges: bytes');// don't forget to send the data tooprint($data);

TA貢獻1155條經(jīng)驗 獲得超0個贊
Range
- 3 回答
- 0 關(guān)注
- 471 瀏覽
添加回答
舉報