Проблема в том, что файл загружается и создается поддиректория в любом случае, какой бы я файл не загружал (pdf, xls, doc, jpeg). Т.е. получается что не работает функция function checkFiles(). А что не так сделал не пойму Код (Text): // загружаем библиотеку JsHttpRequest. require_once "lib/JsHttpRequest/JsHttpRequest.php"; // Инициализация. Обязательно указываем кодировку сценария! $JsHttpRequest =& new JsHttpRequest("utf-8"); // Сохраняем рузультат в глобальном массиве $_RESULT (will appear in req.responseJs). $user = $_REQUEST['user']; $fileName = $_FILES['file']['name']; $tmpName = $_FILES['file']['tmp_name']; $fileType = $_FILES['file']['type']; $GLOBALS['_RESULT'] = array( "type" => $fileType, "user" => $user, "name" => $fileName, "md5" => md5(@file_get_contents($tmpName)), ); $fileDir = "files"; // каталог для хранения файлов @mkdir($fileDir, 0777); // создаем, если его еще нет $config = array( // Максимальная ширина и высота (в пикселях) "max_width"=>3200, "max_height"=>2200, // Минимальная ширина и высота (в пикселях) "min_width"=>300, "min_height"=>300, // Максимальный размер заливаемого файла (в байтах) "max_size"=>5000000, // Типы файлов "type"=>array("image/jpg","image/gif","image/png", "image/jpeg"), // Через сколько удалять картинки (в секундах) "time_del"=>300, // Ошибки "error"=>array( 1=>"Ошибка при передачи файла", 2=>"Файл слишком много весит", 3=>"Файл не картинка", 4=>"Картинка слишком большая", 5=>"Картинка слишком маленькая", 6=>"Ошибка при создании миниатюры", 7=>"Ошибка при изменение размера", 8=>"Нету такой картинки", 9=>"Ошибка при добавлении в базу", 10=>"Ошибка при создании папки для миниатюры", 11=>"Ошибка при создании папки для картинок", 12=>"Ошибка при удалении миниатюры", 13=>"Ошибка при удалении большой картинки", 14=>"Такая картинка уже есть", ) ); function checkFiles() { if (array_search($_RESULT["type"], $config["type"]) < 0) { alert($config["error"][3]); return false; } else { return TRUE; } } // Проверяем, принят ли файл. if ($_SERVER['REQUEST_METHOD'] == "POST" && $tmpName && checkFiles() ) { $file_directory = substr($_RESULT["md5"], 0, 5); // возвращает 5 первых символов, например: abcde $thumb_dir .= $fileDir . DIRECTORY_SEPARATOR . $file_directory; // указываем путь для подкаталога для хранения файлов @mkdir($thumb_dir, 0777); $name = "$thumb_dir/".time().".".$p[1]; move_uploaded_file($tmpName, $name); } else { alert("Попытка добавить файл недопустимого формата!"); }
http://php.net/array_search Код (PHP): array_search($_RESULT["type"], $config["type"]) === FALSE или обойтись простым isset()
А как в этом случае мне сохранить это условие Код (Text): if (array_search($_RESULT["type"], $config["type"]) < 0) ????
Что я туплю, но вот здесь у меня все работает Код (Text): private function checkFiles() { if (!isset($_FILES[$this -> config["name"]]) || !is_uploaded_file($_FILES[$this -> config["name"]]['tmp_name'])) { $this -> error($this -> config["error"][1]); } if ($_FILES[$this -> config["name"]]["error"] != 0) $this -> error($this -> config["error"][1]); if ($_FILES[$this -> config["name"]]["size"] > $this -> config["max_size"]) { $this -> error($this -> config["error"][2]); } if (array_search($_FILES[$this -> config["name"]]["type"], $this -> config["type"]) < 0) { $this -> error($this -> config["error"][3]); } $size = getimagesize($_FILES[$this -> config["name"]]['tmp_name']); if ($size[0] > $this -> config["max_width"] || $size[1] > $this -> config["max_height"]) { $this -> error($this -> config["error"][4]); } if ($size[0] < $this -> config["min_width"] || $size[1] < $this -> config["min_height"]) { $this -> error($this -> config["error"][5]); } return true; }