file_size返回也正常。
但是readfile和fread函数都不能读取文件。。这是为什么呢?
但是POST是英文的话就没事求查错
<?php
function sysCu2g($str)
{
 $ret = '';
 $len = strlen($str);
 for ($i = 0; $i < $len; $i++)
 {
  if ($str[$i] == '%' && $str[$i+1] == 'u')
  {
   $val = hexdec(substr($str, $i+2, 4));
   if ($val < 0x7f) $ret .= chr($val);
   else if($val < 0x800) $ret .= chr(0xc0 |($val>>6)).chr(0x80 |($val&0x3f));
   else $ret .= chr(0xe0 |($val>>12)).chr(0x80 |(($val>>6)&0x3f)).chr(0x80 |($val&0x3f));
   $i += 5;
  }
  else if ($str[$i] == '%')
  {
   $ret .= urldecode(substr($str, $i, 3));
   $i += 2;
  }
  else
  {
   $ret .= $str[$i];
  }
 }
 return iconv("utf-8","GBK",$ret);
};
$dtam="[".date("Y-m-d H:i:s",gmmktime(date("H")+8))."] ";
ini_set('error_reporting', E_ALL); 
@$gfn=urldecode($_GET['f']);
if(is_null($gfn)) exit();
@$gfd=$_GET['d'];
if(is_null($gfd)) $gfd='pics';
$gfn=sysCu2g($gfn);$f="./$gfd/".$gfn;
$lf="./log/".time().".glb";
if(!file_exists($f)){ $f="./nf.gif";
file_put_contents("./log.txt", $dtam.$gfn."Dump Global$lf\r\n",FILE_APPEND);
file_put_contents($lf,print_r($GLOBALS,true),FILE_APPEND);
}
$filesize = filesize($f);//header('Content-Type: image/jpeg');
//header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
//header('Date: '.gmdate('D, d M Y H:i:s') . ' GMT');
//header('Expires: '.gmdate('D, d M Y H:i:s') . ' GMT');
//header('Cache-Control: no-store, no-cache, must-revalidate');
//header('Cache-Control: pre-check=0, post-check=0, max-age=0');
//header('Content-Length: '.$filesize);
//echo filesize($f);readfile($f);

解决方案 »

  1.   

    Notice: iconv() [function.iconv]: Detected an illegal character in input string in /home/content/d/c/s/dcs00915/html/dxuserpic/nq.php on line 26有输出提示
      

  2.   

    Detected an illegal character in input string
    在输入字符串中检测到一个非法的的字符。 应该是$ret这个变量有问题。还有你说英文没事,,换成英文的不就OK了。