Exemplo n.º 1
0
 /**
  * Read storage 
  * 
  * @param \XLite\Model\Base\Storage $storage Storage
  *  
  * @return void
  */
 protected function readStorage(\XLite\Model\Base\Storage $storage)
 {
     $range = null;
     if (isset($_SERVER['HTTP_RANGE'])) {
         list($sizeUnit, $range) = explode('=', $_SERVER['HTTP_RANGE'], 2);
         if ('bytes' == $sizeUnit) {
             list($range, $extra) = explode(',', $range, 2);
         }
     }
     $start = null;
     $length = $storage->getSize();
     if ($range) {
         $size = $length;
         list($start, $end) = explode('-', $range, 2);
         $start = abs(intval($start));
         $end = abs(intval($end));
         $end = $end ? min($end, $size - 1) : $size - 1;
         $start = !$start || $end < $start ? 0 : max($start, 0);
         if ($start > 0 || $end < $size - 1) {
             header('HTTP/1.1 206 Partial Content', true, 206);
         }
         header('Content-Range: bytes ' . $start . '-' . $end . '/' . $size);
         $length = $end - $start + 1;
     }
     header('Accept-Ranges: bytes');
     header('Content-Length: ' . $length);
     if (!\XLite\Core\Request::getInstance()->isHead()) {
         $storage->readOutput($start, $length);
     }
 }
Exemplo n.º 2
0
 /**
  * Read storage
  *
  * @param \XLite\Model\Base\Storage $storage Storage
  *
  * @return void
  */
 protected function readStorage(\XLite\Model\Base\Storage $storage)
 {
     $storage->readOutput();
 }