|
|
|
| Доброго времени суток!
Для загрузки файлов на сервер использую такой скрипт
$login=$_SESSION['userName'];
$file = $_FILES['userfile']['tmp_name'];
$filename = $_FILES['userfile']['name'];
if(!empty($file))
{
ini_set('memory_limit', '32M');
$maxsize = "10000000";
$extentions = array( "rar","zip","7z","arj","gzip","tar");
$size = filesize ($_FILES['userfile']['tmp_name']);
$type = strtolower(substr($filename, 1+strrpos($filename,".")));
$new_name = 'tender-'.$login.'-'.time().'.'.$type;
if($size > $maxsize)
{
echo ("Файл больше 10 мб. Уменьшите размер вашего файла или загрузите другой.");
}
elseif(!in_array($type,$extentions))
{
$error="Файл имеет недопустимое расширение</b>. Допустимыми являются форматы архивов!";
mosRedirect1("zayavka.php?variable=$error");
}
else
{
if (move_uploaded_file($file, "uploads/".$new_name))
{
$msg="Ваша заявка принята!";
mosRedirect("zayavka.php?variable=$msg");
}
else echo "Файл НЕ был загружен.";
}
}
|
Все работает за исключением вот этой строки
echo ("Файл больше 10 мб. Уменьшите размер вашего файла или загрузите другой.");
|
Не выводит данное сообщение если размер больше 10 Мб, выдает пустую страницу.
Подскажите что не так? | |
|
|
|
|
|
|
|
для: nameivan
(02.06.2010 в 10:15)
| | $_FILES['uploadfile']['size'] - размер принятого файла в байтах; | |
|
|
|
|
|
|
|
для: Valick
(02.06.2010 в 10:40)
| | даже если прописать через $_FILES['userfile']['size'] все ровно получаю пустую страницу | |
|
|
|
|
|
|
|
для: nameIvan
(02.06.2010 в 10:54)
| | показывайте как "прописали"...
Трианон уже Вам намекнул, что код у вас мягко говоря не элегантный :)
начинать нужно с обработки ошибок
$_FILES['uploadfile']['error']
Начиная с PHP 4.2.0, PHP возвращает код ошибки наряду с другими атрибутами принятого файла.
Он расположен в массиве, создаваемом PHP при загрузке файла, и может быть получен при обращении по ключу ['error'].
Говоря другими словами, код ошибки можно найти в переменной $_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; Файл не был загружен.
|
| |
|
|
|
|
|
|
|
для: nameIvan
(02.06.2010 в 10:54)
| |
<?php
switch ($_FILES['uploadfile']['error'] ){
case 4: echo "Файл не был загружен."; break;
case 3: echo "Загружаемый файл был получен только частично."; break;
case 2: echo "Размер загружаемого файла превысил значение MAX_FILE_SIZE,
указанное в HTML-форме."; break;
case 1: echo "Размер принятого файла превысил максимально допустимый размер,
который задан директивой upload_max_filesize конфигурационного файла php.ini."; break;
case 0: echo "Ошибок не возникало, файл был успешно загружен на сервер."; break;
default: echo"Неизвестная ошибка";
}
?>
|
| |
|
|
|
|
|
|
|
для: Valick
(02.06.2010 в 11:29)
| | Вообще-то этими событиями список ошибок не исчерпывается... уж коль скоро писать что-то универсальное, стоит заглянуть в мануал посвежее. Может быть даже на аглицком.
Но у автора-то другая проблема.
Он не понимает, почему его скрипт так работает.
И что, на мой взгляд, куда более печально - не знает, что предпринять, чтобы понять, что происходит.
Потому что не понимать сей момент почему - это в общем-то рядовая ситуация при программировании.
А вот не знать, какие шаги предпринять, чтобы стало понятно - куда хуже. | |
|
|
|
|
|
|
|
для: Trianon
(02.06.2010 в 11:36)
| | Скрипт работает, не выводит только сообщение о том, что объем превышает допустимый | |
|
|
|
|
|
|
|
для: nameIvan
(02.06.2010 в 11:48)
| | Если скрипт работает не так как надо [Вам] - значит [именно для Вас] он не работает.
От себя могу сказать, что скрипт написан с логическими ошибками, а значит работоспособным считаться не может всяко. | |
|
|
|
|
|
|
|
для: nameIvan
(02.06.2010 в 11:48)
| | попробуйте написать так
if(!empty($file))
{ ...
}else{
echo "а вот тут я про...ал все свои хлебные карточки";
}
|
| |
|
|
|
|
|
|
|
для: Valick
(02.06.2010 в 12:06)
| | Вот! Исходя из того что выводится эта фраза про карточки следует вывод что файл не передается.
Максимальный размер загружаемого файла 2 Мб по умолчанию. Можно ли увеличить размер не внося изменения в upload_max_filesize? | |
|
|
|
|
|
|
|
для: nameIvan
(02.06.2010 в 12:10)
| | Атрибут Enctype прописали в форме? | |
|
|
|
|
|
|
|
для: nameivan
(02.06.2010 в 10:15)
| | почему именно его? | |
|
|
|
|
|
|
|
для: nameivan
(02.06.2010 в 10:15)
| | >Все работает за исключением вот этой строки
>
>echo ("Файл больше 10 мб. Уменьшите размер вашего файла или загрузите другой.");
>
|
>Не выводит данное сообщение если размер больше 10 Мб, выдает пустую страницу.
>Подскажите что не так?
Эта строка в Вашем коде не просто так стоит, а под условием:
<?
if($size > $maxsize)
{
echo ("Файл больше 10 мб. Уменьшите размер вашего файла или загрузите другой.");
}
|
Так если строка не появляется, может условие не срабатывает?
Значения переменных может стоит вывести?
Или хотя бы посмотреть, откуда они такие берутся? | |
|
|
|
|
|
|
|
для: Trianon
(02.06.2010 в 11:31)
| | Попробовал таким образом
if ($_FILES['userfile']['size'] > 1024*10*1024)
{
echo ("Файл больше 10 мб. Уменьшите размер вашего файла или загрузите другой.");
}
|
Тоже ничего не дает.
$size = filesize ($_FILES['userfile']['tmp_name']);
echo $size; ничего не выводит | |
|
|
|
|
|
|
|
для: nameIvan
(02.06.2010 в 11:55)
| | Так а с какого перепугу эта функция...
>$size = filesize ($_FILES['userfile']['tmp_name']);
>echo $size; ничего не выводит
...эта функция будет что-то считать, если файл-то не загрузился?!
Длину чего Вы пытаетесь из-под нее вытащить?
Насчет первого фрагмента, могу сазать, что Valick, советующий первым шагом смотреть значение элемента $_FILES['userfile']['error'] - прав на 100% .
В самом общем случае, если код ошибки показывает что-то нехорошее, остальные поля массива могут оказаться просто напросто ничем не заполнены, так как кода ошибки достаточно для вящей определенности. | |
|
|
|
|
|
|
|
для: nameivan
(02.06.2010 в 10:15)
| |
<?
if($_FILES['uploadfile']['error'] > 0){
echo 'Файл НЕ был загружен: ';
echo '<pre>';
print_r($_FILES['uploadfile']['error']);
/* switch ($_FILES['uploadfile']['error'] ){
case 4: echo "Файл не был загружен."; break;
case 3: echo "Загружаемый файл был получен только частично."; break;
case 2: echo "Размер загружаемого файла превысил значение MAX_FILE_SIZE,указанное в HTML-форме."; break;
case 1: echo "Размер принятого файла превысил максимально допустимый размер,
который задан директивой upload_max_filesize конфигурационного файла php.ini."; break;
case 0: echo "Ошибок не возникало, файл был успешно загружен на сервер."; break;
default: echo"Неизвестная ошибка";
} */
exit();
}
else echo 'Файл успешно загружен.';
|
| |
|
|
|