Пример #1
0
function upload_image($input, $image = null, $type = 'team', $scale = false)
{
    $year = date('Y');
    $day = date('md');
    $n = time() . rand(1000, 9999) . '.jpg';
    $z = $_FILES[$input];
    $filename = $z["tmp_name"];
    $image_size = getimagesize($filename);
    if ($z && strpos($z['type'], 'image') === 0 && $z['error'] == 0) {
        if (!$image) {
            RecursiveMkdir(IMG_ROOT . '/' . "{$type}/{$year}/{$day}");
            $image = "{$type}/{$year}/{$day}/{$n}";
            $path = IMG_ROOT . '/' . $image;
        } else {
            RecursiveMkdir(dirname(IMG_ROOT . '/' . $image));
            $path = IMG_ROOT . '/' . $image;
        }
        if ($type == 'user') {
            Image::Convert($z['tmp_name'], $path, 48, 48, Image::MODE_CUT);
        } else {
            if ($type == 'team') {
                move_uploaded_file($z['tmp_name'], $path);
                mark_image($image_size, $path, IMG_ROOT . '/logo.png');
            }
        }
        if ($type == 'team' && $scale) {
            $npath = preg_replace('#(\\d+)\\.(\\w+)$#', "\\1_index.\\2", $path);
            Image::Convert($path, $npath, 190, 120, Image::MODE_CUT);
        }
        return $image;
    }
    return $image;
}
Пример #2
0
function uploadfile($inputname)
{
    global $INI;
    $immediate = isset($_GET['immediate']) ? $_GET['immediate'] : 0;
    $attachdir = 'upload';
    //上传文件保存路径,结尾不要带/
    $dirtype = 1;
    //1:按天存入目录 2:按月存入目录 3:按扩展名存目录  建议使用按天存
    $maxattachsize = 2097152;
    //最大上传大小,默认是2M
    $upext = 'jpg,jpeg,gif,png';
    //上传扩展名
    $msgtype = 2;
    //返回上传参数的格式:1,只返回url,2,返回参数数组
    $err = "";
    $msg = "";
    if (!isset($_FILES[$inputname])) {
        return array('err' => '文件域的name错误或者没选择文件', 'msg' => $msg);
    }
    $upfile = $_FILES[$inputname];
    if (!empty($upfile['error'])) {
        switch ($upfile['error']) {
            case '1':
                $err = '文件大小超过了php.ini定义的upload_max_filesize值';
                break;
            case '2':
                $err = '文件大小超过了HTML定义的MAX_FILE_SIZE值';
                break;
            case '3':
                $err = '文件上传不完全';
                break;
            case '4':
                $err = '无文件上传';
                break;
            case '6':
                $err = '缺少临时文件夹';
                break;
            case '7':
                $err = '写文件失败';
                break;
            case '8':
                $err = '上传被其它扩展中断';
                break;
            case '999':
            default:
                $err = '无有效错误代码';
        }
    } elseif (empty($upfile['tmp_name']) || $upfile['tmp_name'] == 'none') {
        $err = '无文件上传';
    } else {
        $fileinfo = pathinfo($upfile['name']);
        $extension = strtolower($fileinfo['extension']);
        if (preg_match('/' . str_replace(',', '|', $upext) . '/i', $extension)) {
            $filesize = $upfile['size'];
            if ($filesize > $maxattachsize) {
                $err = '文件大小超过' . $maxattachsize . '字节';
            } else {
                $year = date('Y');
                $day = date('md');
                $n = time() . rand(1000, 9999) . '.jpg';
                $attach_dir = IMG_ROOT . "/team/{$year}/{$day}";
                RecursiveMkdir(IMG_ROOT . "/team/{$year}/{$day}");
                $fname = time() . rand(1000, 9999) . '.' . $extension;
                $target = $attach_dir . '/' . $fname;
                if (is_resource($upfile['tmp_name'])) {
                    $data = fread($upfile['tmp_name'], $filesize);
                    file_put_contents($target, $data);
                    $image_size = getimagesize($target);
                    mark_image($image_size, $target, IMG_ROOT . '/logo.png');
                    fclose($upfile['tmp_name']);
                } else {
                    move_uploaded_file($upfile['tmp_name'], $target);
                    $image_size = getimagesize($target);
                    mark_image($image_size, $target, IMG_ROOT . '/logo.png');
                    @unlink($upfile['tmp_name']);
                }
                $target = $INI['system']['imgprefix'] . "/static/team/{$year}/{$day}/{$fname}";
                if ($immediate == '1') {
                    $target = '!' . $target;
                }
                if ($msgtype == 1) {
                    $msg = $target;
                } else {
                    $msg = array('url' => $target, 'localname' => $upfile['name'], 'id' => '1');
                }
                //id参数固定不变,仅供演示,实际项目中可以是数据库ID
            }
        } else {
            $err = '上传文件扩展名必需为:' . $upext;
        }
        if (is_resource($upfile['tmp_name'])) {
            fclose($upfile['tmp_name']);
        } else {
            @unlink($upfile['tmp_name']);
        }
    }
    return array('err' => $err, 'msg' => $msg);
}