} ##### Panel Control Check ##### ##### Upload File Validation ##### if (isset($_POST["submit_file"])) { if ($_FILES["file"]["error"] > 0) { if ($_FILES["file"]["error"] == 4) { error_msg("Error: Please select a torrent file."); } else { error_msg("Error: " . $_FILES["file"]["error"]); } } else { $file_name = $_FILES["file"]["name"]; $tmp_path = $_FILES["file"]["tmp_name"]; $file_path = $upload_dir . "/" . $_FILES["file"]["name"]; $file_type = $_FILES["file"]["type"]; if (check_ext($file_name) || check_file_type($file_type)) { if (file_exists($file_path)) { error_msg("Error: {$file_name} already exists!"); } else { move_uploaded_file($tmp_path, $file_path); if (!valid_torrent($file_path)) { remove_torrent($file_path); error_msg("Error: Invalid torrent file!"); } else { output_msg("Uploaded: {$file_name}"); } } } else { error_msg("Error: Invalid file type!"); } }
/** * 处理上传文件,若上传出错,返回''或空array(),错误信息在$error中返回 * @param $upload 上传文件数组 * @param $mode 是否是批量模式 * @param $ext 文件格式 * @param $type 文件类别或用图,如:pic,txt,media,user/logo等, 主要用于为文件分类 * @param $error 返回错误信息 */ function upload($upload, $mode = false, $ext = 'jpg,jpeg,gif,png', $type = "pic", &$error = '') { $picsavedir = Config::get('env.picsavedir'); $root_dir = SIMPHP_ROOT . $picsavedir; $relative_dir = $type . '/' . date('Ym') . "/"; //相对地址 $target_dir = $root_dir . $relative_dir; //绝对地址 if (!file_exists($target_dir)) { mkdirs($target_dir); /* $mode = 0777; mkdir($target_dir,$mode,true); chmod($target_dir, $mode);*/ @fclose(fopen($target_dir . '/index.htm', 'w')); } //批量上传 if ($mode) { $array = array(); foreach ($upload["error"] as $key => $error) { $check_type = check_type($upload['tmp_name'][$key], $upload['name'][$key], $ext); if (!empty($check_type)) { if (!empty($upload['name'][$key]) && $upload['size'][$key] < 2 * 1024 * 1024) { $get_ext = get_ext($upload['name'][$key]); if (check_ext($get_ext, $ext)) { $name = date('d_His'); $name .= "_" . randchar(); $name .= "." . $get_ext; if (upload_move_file($upload['tmp_name'][$key], $target_dir . $name)) { $array[] = $picsavedir . $relative_dir . $name; //记录相对于网站根路径的文件路径 } } } } } return $array; } else { //单个上传 $filename = ''; //图片的相对地址 $localName = ''; //上传文件的本地名称 $maxAttachSize = 10 * 1024 * 1024; //允许上传的文件大小,10M $err = ""; //错误信息 $tempName = ''; //临时文件名 $tempName_noExt = ''; //不带后缀的文件名 $tempPath = ''; //临时文件绝对路径 $tempName = date('d_His'); $tempName .= "_" . randchar(); $tempName_noExt = $tempName; $tempName .= ".tmp"; $tempPath = $target_dir . $tempName; //HTML5上传 if (isset($_SERVER['HTTP_CONTENT_DISPOSITION']) && preg_match('/attachment;\\s+name="(.+?)";\\s+filename="(.+?)"/i', $_SERVER['HTTP_CONTENT_DISPOSITION'], $info)) { file_put_contents($tempPath, file_get_contents("php://input")); $localName = urldecode($info[2]); } else { //普通上传 /* //检测上传文件的类型 //$check_type=check_type($upload['tmp_name'],$upload['name'],$ext); $check_type=true; if(!empty($check_type)){ //上传的文件不能超过10M if (!empty($upload['name'])&&$upload['size']<10*1024*1024){ $get_ext=get_ext($upload['name']); if(check_ext($get_ext,$ext)){ $name = date('YmdHis'); $name.="_"; for ($i = 0; $i < 6; $i++){ $name .=chr(mt_rand(97, 122)); } $name .=".".$get_ext; if (upload_move_file($upload['tmp_name'],$target_dir.$name)){ $filename=$relative_dir.$name; } } }else{ } }*/ if (!isset($upload)) { $err = '文件域的name错误'; } elseif (!empty($upload['error'])) { switch ($upload['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($upload['tmp_name']) || $upload['tmp_name'] == 'none') { $err = '无文件上传'; } else { move_uploaded_file($upload['tmp_name'], $tempPath); $localName = $upload['name']; } } //文件上传是否出错了 if ($err == '') { $fileInfo = pathinfo($localName); $extension = $fileInfo['extension']; //文件的名缀名 //检测上传文件格式 if (preg_match('/^(' . str_replace(',', '|', $ext) . ')$/i', $extension)) { $bytes = filesize($tempPath); //检测上传文件的大小 if ($bytes > $maxAttachSize) { $err = '请不要上传大小超过' . formatBytes($maxAttachSize) . '的文件'; } else { $targetPath = $target_dir . $tempName_noExt . '.' . $extension; //文件的最终存放位置 if (!rename($tempPath, $targetPath)) { @copy($tempPath, $targetPath); } @chmod($targetPath, 0755); $filename = $picsavedir . $relative_dir . $tempName_noExt . '.' . $extension; //记录相对于网站根路径的文件路径 } } else { $err = '上传文件扩展名必需为:' . $ext; } //@unlink($tempPath);//删除临时文件 } if ($err != '') { $error = $err; } return $filename; } }