Показать сообщение отдельно
  #1 (permalink)  
Старый 11.08.2011, 20:15
Аспирант
Отправить личное сообщение для shkarbatov Посмотреть профиль Найти все сообщения от shkarbatov
 
Регистрация: 25.07.2011
Сообщений: 45

Проблема с загрузкой файла на сервер
Специалисты, подскажите пожалуйста в рещении проблемы.

Задача:
- необходимо загружать на сервер файлы только определенного типа;
- размер загружаемых файлов не должен превышать 20 Мб;
- если файл меньше 20 Мб и соответствует разрешенному типу формируется письмо с текстом и отправляется на почту
- если файл больше 20 Мб или не соответствует разрешенному типу формируется письмо с текстом об ошибке и отправляется на почту
- если файл больше 20 Мб, тогда не надо ждать пока он загрузится на сервер (этого пока нет, пробывал с полем hidden, но что-то не получается)

В принципе все реализовано, вот только есть одно НО!

Если файл больше 20 Мб, тогда сервер ждет его полной загрузки, и при формировании письма, он отправляет на почту абсолютно пустое письмо без текста и темы.

Подскажите пожалуйста, как реализовать проверку размера файла, что-бы не ждать его полной загрузки на сервер, и объяснить, или показать на мою ошибку, почему если файл больше 20 Мб такое происходит.

upload_max_filesize => 32M => 32M

Текст письма содержится в переменной $message.

Заранее благодарен!

--------------------------------------------------------
Есть html-форма:

<form id="form1" action="send_email.php" method="post" enctype="multipart/form-data">
	<input type="file" name="filename">
	<input type="button" value="Загрузить" onClick="tr();">
</form>

--------------------------------------------------------
Серверная часть:

// Проверка файла на размер
  if($_FILES["filename"]["size"] > 1024*20*1024)
{
	echo ("Размер файла превышает 20 мегабайт");
	$message .= "\r\n\r\n\r\nФайл загрузить на сервер не удалось, так как он превышает допустимый размер - 20 МБ.";	
  	mail($to, $subject, $message, $headers);
	echo "<meta http-equiv='refresh'; content='5; url=/index.php?option=com_content&view=article&id=198&Itemid=232'>"; 	 

// Проверяем загружен ли файл
if(is_uploaded_file($_FILES["filename"]["tmp_name"]))
{
	// Если файл загружен успешно, перемещаем его из временной директории в конечную 
	if (copy($_FILES['filename']['tmp_name'], $uploadfile))
	{
	echo "<p>Файл успешно загружен на сервер</p>"; 
	$message .= "\r\n\r\n\r\nФайл успешно загружен на сервер.";
	mail($to, $subject, $message, $headers);
	echo "<meta http-equiv='refresh'; content='5; url=/index.php'> "; 
	}
else  
	{
	echo("<p>Ошибка! Не удалось загрузить файл на сервер, попробуйте повторить попытку позже!</p>");
	$message .= "\r\n\r\n\r\nФайл загрузить на сервер не удалось.";						
	mail($to, $subject, $message, $headers);
	echo "<meta http-equiv='refresh'; content='5; url=/index.php?option=com_content&view=article&id=198&Itemid=232'>"; 			
	}
}

// Проверка на несоответсвие типа
elseif ($type !== "jpg")
{	
    echo ("Файл не соответствует разрешенному формату");
	$message .= "\r\n\r\n\r\nФайл загрузить на сервер не удалось, так как он не соответствует разрешенному формату.";
	mail($to, $subject, $message, $headers);
	echo "<meta http-equiv='refresh'; content='5; url=/index.php?option=com_content&view=article&id=198&Itemid=232'> "; 	
}

}
else
{
	$asd = mail($to, $subject, $message, $headers);
}
Ответить с цитированием