/** * 下载文件 * 可以指定下载显示的文件名,并自动发送相应的Header信息 * 如果指定了content参数,则下载该参数的内容 * @param string $filename 下载文件名,要是绝对路径 * @param string $showname 下载时显示的文件名,默认为下载的文件名 * @param string $content 下载的内容 * @return void */ public static function download($filename = '', $showname = '', $content = '', $expire = 180) { //得到下载长度 if (file_exists($filename)) { $length = filesize($filename); } elseif ($content != '') { $length = strlen($content); } else { throw new QP_Exception('QP_Http_Http 错误:没有设置 $filename 或 $content'); } // 最到显示的下载文件名 if ($showname == '') { $showname = $filename; } $showname = basename($showname); // 根据扩展名得到 MIME TYPE $infoArr = pathinfo($showname); $mimeType = QP_Func_Func::mimeType($infoArr['extension']); // 发送Http Header信息 开始下载 Header("Content-type: {$mimeType}"); Header("Accept-Ranges: bytes"); Header("Accept-Length: " . $length); Header("Content-Disposition: attachment; filename=\"{$showname}\""); // 优先下载指定的内容再下载文件 if ($content == '') { $file = @fopen($filename, "r"); if (!$file) { throw new QP_Exception('QP_Http_Http 错误:下载文件打开失败 ' . $filename); } // 一次读 1K 内容 while (!@feof($file)) { echo @fread($file, 1024 * 1000); } @fclose($file); } else { echo $content; } exit; }
/** * 判断文件是否为图片 * * @param unknown_type $file */ function isImage($file) { // 得到扩展名 $ext = strtolower(QP_Func_Func::fileExt($file)); return in_array($ext, array('.jpg', '.jpeg', '.gif', '.png', '.bmp')); }
/** * 生成图片验证码 * * @param int $length :验证码长度 * @param int $mode :模型 0:数字 1:小写字母 2:大写字母 3:字母与数字组合 * @param string $type :指定图片类型,一般用默认值. * @param int $width :图片宽 * @param int $height :图片高 */ public static function imgVerify($length = 4, $mode = 3, $type = 'png', $width = 48, $height = 22) { // 生成随机数保存在 SESSION 中 $randval = QP_Func_Func::randString($length, $mode); QP_Session_Session::set('QP_Verify_Code', md5(strtolower($randval))); $width = $length * 9 + 10 > $width ? $length * 9 + 10 : $width; if ($type != 'gif' && function_exists('imagecreatetruecolor')) { $im = @imagecreatetruecolor($width, $height); } else { $im = @imagecreate($width, $height); } $r = array(225, 255, 255, 223); $g = array(225, 236, 237, 255); $b = array(225, 236, 166, 125); $key = mt_rand(0, 3); //$backColor = imagecolorallocate($im, $r[$key],$g[$key],$b[$key]); //背景色(随机) $backColor = imagecolorallocate($im, 255, 255, 255); //背景白色 $borderColor = imagecolorallocate($im, 100, 100, 100); //边框色 //$pointColor = imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); //点颜色 $pointColor = imagecolorallocate($im, 255, 255, 255); @imagefilledrectangle($im, 0, 0, $width - 1, $height - 1, $backColor); @imagerectangle($im, 0, 0, $width - 1, $height - 1, $borderColor); $stringColor = imagecolorallocate($im, mt_rand(0, 200), mt_rand(0, 120), mt_rand(0, 120)); // 干扰 for ($i = 0; $i < 10; $i++) { //$fontcolor=imagecolorallocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255)); //imagearc($im,mt_rand(-10,$width),mt_rand(-10,$height),mt_rand(30,300),mt_rand(20,200),55,44,$fontcolor); } for ($i = 0; $i < 25; $i++) { $fontcolor = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $pointColor); } @imagestring($im, 5, 5, 3, $randval, $stringColor); header("Content-type: image/" . $type); $ImageFun = 'Image' . $type; $ImageFun($im); imagedestroy($im); }