Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сделать проверку по размеру, загружаемых на сервер файлов!
 
 автор: SilentChild   (29.04.2008 в 14:19)   письмо автору
 
 

Привет, Всем добрым человекам, которые надеюсь помогут мне!
Это очень простая задача, только я че-то не могу до неё допереть!

Есть колличество ($count) полей под загружаемые файлы;
Поля имеют имена userphoto[0], ..., ... и т.д.
Как выглядит код??? который проверяет, при загрузке файлов на сервер, размер этих файлов и встретив размер не равный нулю (то есть файл был загружен), сразу бы выходил из процесса проверки, вот мои зарисовки:

<?php
$count 
$_FILES['userphoto']['name']
$i 0;
while(
$i $count)
{
    if(
$_FILES['userphoto']['size'][$i] != 0)
    {
        break;  
    }
    else
    {
        
$i ++;
    }

//из цикла тоже надо свалить как-то, после обнаружения размера файла не равного нулю. Как это сделать?
}
?>

   
 
 автор: vitali   (29.04.2008 в 15:57)   письмо автору
 
   для: SilentChild   (29.04.2008 в 14:19)
 

$_FILES представляет ассоциативный массив с ключами:
- name - исходное имя файла(до отправки на сервер)
- type - MIME-тип загрузочного файла(если браузер мог его определить: image/gif, text/html,
application/x-zip-compressed и т.д. )
- tmp_name - имя временного файла на сервере. Файл содержит данные, переданные пользователем,
с ним(файлом) можно делать: удалять, копировать, переименовывать, снова удалять
- size - размер закаченного файла в байтах
- error - признак ошибки во время закачки:
0 - UPLOAD_ERR_OK - файл получен полностью;
- UPLOAD_ERR_NO_FILE - пользователь не выбрал файл в браузере;
- UPLOAD_ERR_INI_SIZE - превышен размер файла(задавемый в php.ini директивой
upload_max_filesize в php.ini;
- UPLOAD_ERR_FORM_SIZE - превышен размер, задаваемый в необязательном поле формы
с именем UPLOAD_ERR_FORM_SIZE
- UPLOAD_ERR_PARTIAL - файл недокачен до конца из-за обрыва соединения.
Замечание: если в php.ini включен режим register_globals, то для каждого заканчиваемого файла PHP
создаст дополнительно 5 глобальных переменных.
Например, глобальная переменная $myFile_name будет хранить, то же самое, что и $_FILES['myFile']['name'],
а $myFile_type эквивалентна $_FILES['myFile']['type'].
Переменная $myFile (без суффикса, начинающегося с подчерка) в этом случае будет хранить
имя временного файла и т.д.

Итак проверка - как закачался файл сводится к проверке $_FILES['myFile']['error'] на не НУЛЕВОЕ
ЗНАЧЕНИЕ или на отсутствие ФАЙЛА с именем заданным в $_FILES['myFile']['tmp_name'] или
по ОТСУТСТВИЮ самого эл-та.

   
 
 автор: mihdan   (29.04.2008 в 18:27)   письмо автору
 
   для: SilentChild   (29.04.2008 в 14:19)
 

<?php
$maxFileSize 
1024 80;
$count $_FILES['userphoto']['name']
$i 0;
while(
$i $count)
{
    if((
$_FILES['userphoto']['size'][$i] != 0) || ($_FILES['userphoto']['size'][$i] > $maxFileSize))
    {
        break;  
    }
    else
    {
        
$i ++;
    }

//из цикла тоже надо свалить как-то, после обнаружения размера файла не равного нулю. Как это сделать?
}
?> 

   
 
 автор: SilentChild   (30.04.2008 в 08:49)   письмо автору
 
   для: mihdan   (29.04.2008 в 18:27)
 

А зачем еще указывать $maxFileSize ? Мне не важен размер, мне важно его отсутствие!

Покажите способ выйти из цикла, если размер не равен нулю и всё, а то че-то вы понаписали...без пива и не разберёшь =)

   
 
 автор: sim5   (30.04.2008 в 09:01)   письмо автору
 
   для: SilentChild   (30.04.2008 в 08:49)
 

Вы несете чушь полнейшую, пытаясь изобрести велосипед. Просмотрите массив по получению формы, будет понятно:

<?
print '<pre>';
print_r($_FILES);
print 
'</pre>';
?>

   
 
 автор: mihdan   (30.04.2008 в 16:41)   письмо автору
 
   для: SilentChild   (30.04.2008 в 08:49)
 

>Покажите способ выйти из цикла
у вас уже написано - break; Если просто пропустить одну итерацию - continue;

   
 
 автор: mihdan   (30.04.2008 в 16:39)   письмо автору
 
   для: SilentChild   (29.04.2008 в 14:19)
 

http://phpclub.ru/detail/article/upload

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования