Ejemplo n.º 1
0
function file_upload($file, $type = 'image', $name = '', $is_wechat = false)
{
    $harmtype = array('asp', 'php', 'jsp', 'js', 'css', 'php3', 'php4', 'php5', 'ashx', 'aspx', 'exe', 'cgi');
    if (empty($file)) {
        return error(-1, '没有上传内容');
    }
    if (!in_array($type, array('image', 'thumb', 'voice', 'video', 'audio'))) {
        return error(-2, '未知的上传类型');
    }
    global $_W;
    $ext = pathinfo($file['name'], PATHINFO_EXTENSION);
    $ext = strtolower($ext);
    if (!$is_wechat) {
        $setting = $_W['setting']['upload'][$type];
        if (!in_array(strtolower($ext), $setting['extentions']) || in_array(strtolower($ext), $harmtype)) {
            return error(-3, '不允许上传此类文件');
        }
        if (!empty($setting['limit']) && $setting['limit'] * 1024 < filesize($file['tmp_name'])) {
            return error(-4, "上传的文件超过大小限制,请上传小于 {$setting['limit']}k 的文件");
        }
    }
    $result = array();
    if (empty($name) || $name == 'auto') {
        $uniacid = intval($_W['uniacid']);
        $path = "{$type}s/{$uniacid}/" . date('Y/m/');
        mkdirs(ATTACHMENT_ROOT . '/' . $path);
        $filename = file_random_name(ATTACHMENT_ROOT . '/' . $path, $ext);
        $result['path'] = $path . $filename;
    } else {
        mkdirs(dirname(ATTACHMENT_ROOT . '/' . $name));
        if (!strexists($name, $ext)) {
            $name .= '.' . $ext;
        }
        $result['path'] = $name;
    }
    if (!file_move($file['tmp_name'], ATTACHMENT_ROOT . '/' . $result['path'])) {
        return error(-1, '保存上传文件失败');
    }
    $result['success'] = true;
    return $result;
}
Ejemplo n.º 2
0
function file_fetch($url, $limit = 0, $path = '')
{
    global $_W;
    $url = trim($url);
    if (empty($url)) {
        return error(-1, '文件地址不存在');
    }
    if (!$limit) {
        $limit = $_W['setting']['upload']['image']['limit'] * 1024;
    }
    if (empty($path)) {
        $path = "images/{$_W['uniacid']}/" . date('Y/m/');
        if (!file_exists(ATTACHMENT_ROOT . $path)) {
            mkdirs(ATTACHMENT_ROOT . $path);
        }
    }
    load()->func('communication');
    $resp = ihttp_get($url);
    if (is_error($resp)) {
        return error(-1, '提取文件失败, 错误信息: ' . $resp['message']);
    }
    if (intval($resp['code']) != 200) {
        return error(-1, '提取文件失败: 未找到该资源文件.');
    }
    $ext = '';
    switch ($resp['headers']['Content-Type']) {
        case 'application/x-jpg':
        case 'image/jpeg':
            $ext = 'jpg';
            break;
        case 'image/png':
            $ext = 'png';
            break;
        case 'image/gif':
            $ext = 'gif';
            break;
        default:
            return error(-1, '提取资源失败, 资源文件类型错误.');
            break;
    }
    if (intval($resp['headers']['Content-Length']) > $limit) {
        return error(-1, '上传的媒体文件过大(' . sizecount($resp['headers']['Content-Length']) . ' > ' . sizecount($limit));
    }
    $filename = file_random_name(ATTACHMENT_ROOT . $path, $ext);
    $pathname = $path . $filename;
    $fullname = ATTACHMENT_ROOT . $pathname;
    if (file_put_contents($fullname, $resp['content']) == false) {
        return error(-1, '提取失败.');
    }
    return $pathname;
}
Ejemplo n.º 3
0
     if ($_GPC['mediatype'] == 'image') {
         $_W['uploadsetting']['image']['limit'] = 1024;
     } elseif ($_GPC['mediatype'] == 'thumb') {
         $_W['uploadsetting']['image']['limit'] = 64;
     } else {
         $result['message'] = '媒体类型不正确。';
         frameCallback($_GPC['callback'], json_encode($result));
         exit;
     }
 }
 if (empty($dest_dir)) {
     $file = file_upload($_FILES['file']);
 } else {
     $extention = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
     $dir = $_W['uploadsetting']['image']['folder'] . '/' . $dest_dir . '/';
     $fname = file_random_name($dir, $extension);
     $file = file_upload($_FILES['file'], 'image', $dir . $fname);
 }
 if (is_error($file)) {
     $result['message'] = $file['message'];
     frameCallback($_GPC['callback'], json_encode($result));
     exit;
 }
 $path = ATTACHMENT_ROOT . '/';
 $srcfile = ATTACHMENT_ROOT . '/' . $file['path'];
 if (!empty($_GPC['mediatype'])) {
     load()->model('account');
     $token = WeAccount::token(WeAccount::TYPE_WEIXIN);
     if (is_error($token)) {
         $result['message'] = $token['message'];
         frameCallback($_GPC['callback'], json_encode($result));
Ejemplo n.º 4
0
     $result['message'] = '上传失败, 请选择要上传的文件!';
     die(json_encode($result));
 }
 if ($_FILES['file']['error'] != 0) {
     $result['message'] = '上传失败, 请重试.';
     die(json_encode($result));
 }
 $ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
 $ext = strtolower($ext);
 $size = intval($_FILES['file']['size']);
 $originname = $_FILES['file']['name'];
 if (!in_array($ext, $limit[$mode][$type]['ext']) || $size > $limit[$mode][$type]['size']) {
     $result['message'] = $limit[$mode][$type]['errmsg'];
     die(json_encode($result));
 }
 $filename = file_random_name(ATTACHMENT_ROOT . '/' . $setting['folder'], $ext);
 $file = file_upload($_FILES['file'], $type, $setting['folder'] . $filename, true);
 if (is_error($file)) {
     $result['message'] = $file['message'];
     die(json_encode($result));
 }
 $pathname = $file['path'];
 $fullname = ATTACHMENT_ROOT . '/' . $pathname;
 load()->model('account');
 $acc = WeAccount::create($acid);
 $token = $acc->fetch_token();
 if (is_error($token)) {
     $result['message'] = $token['message'];
     die(json_encode($result));
 }
 if ($mode == 'perm' || $mode == 'temp') {