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; }
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; }
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));
$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') {