-faqer-
Я только учусь
Заливка файлов. Функция возвращает не то, что я хочу
Написал на основе details функцию для заливания файлов на сервер, функция отвечает моим требованиям
Она записывает в определенную директорию файл с определенным мной префиксом, номером и расширением, соответсвующим исходному файлу.
А потом возвращает либо ошибку, либо расширение для внесения в базу
Но есть одна проблема
Если просто просабмитить форму, не выбрав файл, функция не выдает ошибок, а возвращает расширение .Пусто
Понимаю, что код не самый компактный, но все же помогите сделать так, чтоб возвращалась ошибка, а не это .Пусто
Написал на основе details функцию для заливания файлов на сервер, функция отвечает моим требованиям
Она записывает в определенную директорию файл с определенным мной префиксом, номером и расширением, соответсвующим исходному файлу.
А потом возвращает либо ошибку, либо расширение для внесения в базу
Но есть одна проблема
Если просто просабмитить форму, не выбрав файл, функция не выдает ошибок, а возвращает расширение .Пусто
Понимаю, что код не самый компактный, но все же помогите сделать так, чтоб возвращалась ошибка, а не это .Пусто
PHP:
function fun_upload ($content = 2, $max_image_width = 1024, $max_image_height = 1024, $max_file_size = 5242880, $uploaddir = '/virt/homes/', $field = "userfile", $prefix = '', $name = '') {
$flag = 0;
$message = array ();
$ext = '';
if ($content == 1) {
$valid_types = array("gif","jpg", "png", "jpeg");
if (isset($_FILES[$field])) {
if (is_uploaded_file($_FILES[$field]['tmp_name'])) {
$filename = $_FILES[$field]['tmp_name'];
$ext = eregi_replace ("[^a-z]", "", strtolower (substr ($_FILES[$field]['name'], 1 + strrpos ($_FILES[$field]['name'], "."))));
if (filesize($filename) > $max_file_size) {
$flag = 1;
$max_file_size = $max_file_size/1024;
$message[] = "Файл превышает допустимый размер ".$max_file_size." kb.";
}
elseif (!in_array($ext, $valid_types)) {
$flag = 1;
$message[] = "Недопустимое разрешение файла.";
}
else {
$size = GetImageSize($filename);
if (($size) && ($size[0] <= $max_image_width) && ($size[1] <= $max_image_height)) {
if (move_uploaded_file($_FILES[$field]['tmp_name'], $uploaddir.$prefix.$name.".".$ext)) {
chmod ($uploaddir.$prefix.$name.".".$ext, 0644);
$flag = 0;
}
else {
$flag = 1;
$message[] = "Невозможно записать файл.";
}
}
else {
$flag = 1;
$message[] = "Изображение превышает допустимые размеры: ".$max_image_width."x".$max_image_height.".";
}
}
}
else {
$flag = 1;
$message = "Пустой файл";
}
}
}
if ($content == 2) {
$valid_types = array("zip","rar", "exe");
if (isset($_FILES[$field])) {
if (is_uploaded_file($_FILES[$field]['tmp_name'])) {
$filename = $_FILES[$field]['tmp_name'];
$ext = eregi_replace ("[^a-z]", "", strtolower (substr ($_FILES[$field]['name'], 1 + strrpos ($_FILES[$field]['name'], "."))));
if (filesize($filename) > $max_file_size*1024*1024) {
$max_file_size = $max_file_size/1024;
$message[] = "Файл превышает допустимый размер ".$max_file_size." kb.";
}
elseif (!in_array($ext, $valid_types)) {
$flag = 1;
$message[] = "Недопустимое разрешение файла.";
}
else {
if (move_uploaded_file($_FILES[$field]['tmp_name'], $uploaddir.$prefix.$name.".".$ext)) {
chmod ($uploaddir.$prefix.$name.".".$ext, 0644);
$flag = 0;
}
else {
$flag = 1;
$message[] = "Невозможно записать файл.";
}
}
}
else {
$flag = 1;
$message = 'Пустой файл';
}
}
}
if ($flag) return $message;
else return $ext;
}