php上传图片

//图片存储路径
$path = 'img/' . date('Ymd');
$ext_list = array('png', 'gif', 'jpg', 'jpeg');
//图片存储路径end

if (!empty($image['tmp_name']) && $image['size'] > 0) {
    $pic = upload_file($image, $path, date('His') . rand(100, 999), $ext_list);
    if ($pic['error'] == 1) {
        die("<script>alert('" . $pic['info'] . "');history.go(-1);</script>");
    }
    $image_url = $pic['info'];
}

/**
 *上传图片指定文件名
 * @param string $path 上传文件保存的文件夹
 * @param array $file 上传的文件内容
 * @param string $filename 上传文件的名字
 * @param array $ext_list 上传文件允许的类型 为空代表不限制上传文件的类型
 * @param int $maxsize 上传文件允许的最大尺寸 为空代表不限制上传文件大小,单位:M
 */
function upload_file($file, $path, $filename, $ext_list = array(), $maxsize = 0)
{
    $root = $_SERVER['DOCUMENT_ROOT'];
    $img_path = 'http://' . $_SERVER['HTTP_HOST'];

    //自动创建文件
    if (!file_exists($root . $path)) {
        mkdir(iconv("UTF-8", "GBK", $root . $path), 0777, true);
    }

    $res = array('error' => 1, 'info' => '');

    //文件上传错误信息
    if ($file['error'] != 0) {
        switch ($file['error']) {
            case 1:
                $info = '1,文件大小超过了 php.ini 中 upload_max_filesize 选项限制的值。';
                break;
            case 2:
                $info = '2,文件大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。';
                break;
            case 3:
                $info = '3,文件只有部分被上传。';
                break;
            case 4:
                $info = '4,没有文件被上传。';
                break;
            case 6:
                $info = '6,找不到临时文件。';
                break;
            case 7:
                $info = '7,文件写入失败。';
                break;
            default:
                $info = 'undefined,未知错误类型。';
        }
        $res['info'] = '上传失败:' . $info;
        return $res;
    }

    //上传文件尺寸过大
    if ($maxsize > 0) {
        if ($file['size'] / 1024 / 1024 > $maxsize) {
            $res['info'] = '上传失败:文件大小超过' . $maxsize . 'M。';
            return $res;
        }
    }

    //文件类型不支持
    $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
    if (!empty($ext_list)) {
        if (!in_array($ext, $ext_list)) {
            $res['info'] = '上传失败:文件类型“' . $ext . '”不在支持的类型“' . implode('、', $ext_list) . '”里。';
            return $res;
        }
    }

    $path_other = $path . '/' . $filename . '.' . $ext;

    //是不是有效的上传文件
    if (is_uploaded_file($file['tmp_name'])) {
        //移动文件实现文件上传
        if (move_uploaded_file($file['tmp_name'], $root . $path_other)) {
            $res['error'] = 0;
            $res['info'] = $img_path . $path_other;
            return $res;
        } else {
            $res['info'] = '上传失败:文件移动' . $root . $path_other . '失败。';
            return $res;
        }
    } else {
        $res['info'] = '上传失败:不是有效的上传文件。';
        return $res;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值