|
|
|
| Подскажите, пожалуйста, как правильно сделать.
Есть скрипт загрузки изображения, он же и обработчик.
Обращение к этому файлу происходит через файл index
вот так я это изобразил
<?php
// массив ошибок
$error = array();
// если форма отправлена
if(isset($_POST['submit'])){
// проверяем заполнены ли поля формы
if(empty($_POST['name'])) $error[] = "Вы не ввели название фотографии.";
// проверяем размер изображения
if($_FILES['image']['error'] == 1) $error[] = "Размер фотографии превышает допустимый размер.";
// если попробовать проверить выбрал ли пользователь изображение, то получается, что если изображение больше максимального всёравно выдаёт это предупреждение
if(empty($_FILES['image']['tmp_name'])) $error[] = "Вы не выбрали изображение";
// если нет ошибок - продолжается выполнение скрипта
if(empty($error)){
.................................................................................................
}
}
// если есть ошибки - показываем пользователю
if(!empty($error)){
.............
}
// тут includ форма загрузки
?>
|
Всё это, при соответствующем значении параметра $_GET, инклюдится в файле index.
Меня интересует, как правильно проверить размер загружаемого изображения и если он превышает максимально разрешённый, то вывести сообщение пользователю?
У меня получается так, что если размер больше допустимого, то выводится предупреждение о превышении допустимого размера и "Вы не выбрали изображение", т.к $_FILES['image']['tmp_name'] присваивается значение "0".
Или просто совместить эти две проверки и выводить одно сообщение на двоих? | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.08.2009 в 17:56)
| | Если_максимум_не_превышен {
если изображение присутствует {
..................
} иначе {
ошибка = нужно указать адрес к изображению
}
} иначе {
ошибка = превышен максимум
}
Так понятно? | |
|
|
|
|
|
|
|
для: neadekvat
(16.08.2009 в 18:01)
| | не совсем
насчёт адреса не понял, зачем указывать адрес, дастаточно вывести сообщение... | |
|
|
|
|
|
|
|
для: Slo_Nik
(16.08.2009 в 18:12)
| |
<?php
if ($_FILES['uploadfile']['size'] > 1024*2*1024) {
$error = 'Размер файла больше двух мегабайт';
} else {
if(empty($_FILES['image']['tmp_name'])) $error[] = "Вы не выбрали изображение";
}
|
Так понятнее? Если размер превышает допустимую норму, то никаких проверок больше проводиться и не будет, так что ошибка будет лишь одна. | |
|
|
|
|
|
|
|
для: neadekvat
(16.08.2009 в 18:24)
| | Корректнее было бы анализировать $_FILES['userfile']['error']
UPLOAD_ERR_OK
Значение: 0; Ошибок не возникало, файл был успешно загружен на сервер.
UPLOAD_ERR_INI_SIZE
Значение: 1; Размер принятого файла превысил максимально допустимый размер, который задан директивой upload_max_filesize конфигурационного файла php.ini.
UPLOAD_ERR_FORM_SIZE
Значение: 2; Размер загружаемого файла превысил значение MAX_FILE_SIZE, указанное в HTML-форме.
UPLOAD_ERR_PARTIAL
Значение: 3; Загружаемый файл был получен только частично.
UPLOAD_ERR_NO_FILE
Значение: 4; Файл не был загружен.
|
| |
|
|
|
|
|
|
|
для: Zend72
(16.08.2009 в 19:09)
| |
<?php
if($_FILES['image']['error'] == 1) $error[] = "Размер фотографии превышает допустимый размер.";
?>
|
да так и сделал | |
|
|
|
|
|
|
|
для: neadekvat
(16.08.2009 в 18:24)
| | так дело в том, что так не работает.
если посмотреть дамп массива $_FILES, когда изображение больше допустимого, то получим
Array
(
[file] => Array
(
[name] => CB002828.jpg
[type] =>
[tmp_name] =>
[error] => 1
[size] => 0
)
)
|
а так как [size] => 0 , то получается, что размер получить не возможно.
вот заменил $_FILES['file']['tmp_name'] на $_FILES['file']['name'] вроде получил то, что надо. | |
|
|
|