Пример #1
0
}
##### 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!");
        }
    }
Пример #2
0
/**
 *  处理上传文件,若上传出错,返回''或空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;
    }
}