fetch($rid); if(!$resourcesdata){ exit('file is not exists'); } $resourattrdata = C::t('pichome_resources_attr')->fetch($rid); $resourcesdata = array_merge($resourcesdata, $resourattrdata); $appdata = C::t('pichome_vapp')->fetch($resourcesdata['appid']); if($perm&2){//判断是否忽略权限 $hasperm = true; }else{ if($_G['adminid']== 1){ $hasperm = true; }else{ $hasperm = C::t('pichome_vapp')->getpermbypermdata($appdata['download'],'download'); } } if(!$hasperm || (!$perm&4 && $ulevel < $resourcesdata['level'])){ @header('HTTP/1.1 403 No Perm'); @header('Status: 404 No Perm'); } if(is_numeric($resourcesdata['path'])){ $thumbpath = IO::getStream('attach::'.$resourcesdata['path']); }else{ $thumbpath = $appdata['path'] . BS . $resourcesdata['path']; } } $url = IO::getStream($thumbpath); $filename = ($resourcesdata['filename']) ? rtrim($resourcesdata['filename'], '.dzz'):rtrim($resourcesdata['name'], '.dzz'); $ext = strtolower(substr(strrchr($filename, '.'), 1, 10)); if (!$ext) $ext = strtolower(substr(strrchr(preg_replace("/\.dzz$/i", '', preg_replace("/\?.*/i", '', $url)), '.'), 1, 10)); $mime = dzz_mime::get_type($ext); if (is_file($url)) { $filename = $url; $start = 0; $total = filesize($filename); header("Cache-Control: private, max-age=2592000, pre-check=2592000"); header("Pragma: private"); header("Expires: " . date(DATE_RFC822, strtotime(" 30 day"))); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($filename)) . ' GMT'); if (isset($_SERVER['HTTP_RANGE'])) { $range = str_replace('=', '-', $_SERVER['HTTP_RANGE']); $range = explode('-', $range); if (isset($range[2]) && intval($range[2]) > 0) { $end = trim($range[2]); } else { $end = $total - 1; } $start = trim($range[1]); $size = $end - $start + 1; header('HTTP/1.1 206 Partial Content'); header('Content-Length:' . $size); header('Content-Range: bytes ' . $start . '-' . $end . '/' . $total); } else { $size = $end = $total; header('HTTP/1.1 200 OK'); header('Content-Length:' . $size); header('Content-Range: bytes 0-' . ($total - 1) . '/' . $total); } header('Accenpt-Ranges: bytes'); header('Content-Type:' . $mime); $fp = fopen($filename, 'rb'); fseek($fp, $start, 0); $cur = $start; @ob_end_clean(); if (getglobal('gzipcompress')) @ob_start('ob_gzhandler'); while (!feof($fp) && $cur <= $end && (connection_status() == 0)) { print fread($fp, min(1024 * 16, ($end - $cur) + 1)); $cur += 1024 * 16; } fclose($fp); exit(); } else { //$cachefile=$_G['siteurl']['attachdir'].'cache/'.play_cache_md5(file).'.'.$ext; //$meta=IO::getMeta($path); //$size=$meta['size']; header("Cache-Control: private, max-age=2592000, pre-check=2592000"); header("Pragma: private"); header("Expires: " . date(DATE_RFC822, strtotime(" 30 day"))); header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($url)) . ' GMT'); header('Content-Type: ' . $mime); //header('Content-Length:'.$size); //header('Content-Range: bytes 0-'.($size-1).'/'.$size); @ob_end_clean(); if (getglobal('gzipcompress')) @ob_start('ob_gzhandler'); @readfile($url); @flush(); @ob_flush(); exit(); }