Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Проблема с загрузкой файла на сервер
Покинул форум
Сообщений всего: 47
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Специалисты, подскажите пожалуйста в рещении проблемы.
Задача:
- необходимо загружать на сервер файлы только определенного типа;
- размер загружаемых файлов не должен превышать 20 Мб;
- если файл меньше 20 Мб и соответствует разрешенному типу формируется письмо с текстом и отправляется на почту
- если файл больше 20 Мб или не соответствует разрешенному типу формируется письмо с текстом об ошибке и отправляется на почту
- если файл больше 20 Мб, тогда не надо ждать пока он загрузится на сервер (этого пока нет, пробывал с полем hidden, но что-то не получается)
В принципе все реализовано, вот только есть одно НО!
Если файл больше 20 Мб, тогда сервер ждет его полной загрузки, и при формировании письма, он отправляет на почту абсолютно пустое письмо без текста и темы.
Подскажите пожалуйста, как реализовать проверку размера файла, что-бы не ждать его полной загрузки на сервер, и объяснить, или показать на мою ошибку, почему если файл больше 20 Мб такое происходит.
upload_max_filesize => 32M => 32M
Текст письма содержится в переменной $message.
Заранее благодарен!
-------------------------------- ------------------------
Есть html-форма:
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
shkarbatov пишет:
- если файл больше 20 Мб, тогда не надо ждать пока он загрузится на сервер
Варианта 2:
0) ставите upload_max_filesize 20M и, соответственно, отваливаются все другие возможные загрузки за 20мб.
1) используете другой язык программирования. PHP всегда ждёт все данные и начинает работу строго после.
shkarbatov пишет:
показать на мою ошибку
Нарушена логика.
По логике скрипта, дословно:
если файл > 20, отправляем письмо. Затем проверяем - это загруженный файл? И в любом случае шлём ещё письмо.
А если файл < 20мб, то отправляем письмо.
Т.е. статус "файл загружен" получит файл размером в 20мб и больше, а не наоборот.
----- PostgreSQL DBA
shkarbatov
Отправлено: 11 Августа, 2011 - 23:04:45
Новичок
Покинул форум
Сообщений всего: 47
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Письмо отправляется в любом случае, вы правы, но с разным контекстом. Если успешно, то пишет, что успешно, если не успешно, то пишет, что не успешно. С маленькими файлами работает без проблем.
Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009 Откуда: Россия, Санкт-Петербург
Помог: 618 раз(а)
Как же оно так работает? По коду точно видно, что сохраняется, только если он больше 20мб.
А если файл не загружен - то проверяем его тип, тоже гениально в своей бессмысленности.
Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010
Помог: 3 раз(а)
Могу посоветовать использовать jQuery плагин Multiple File Upload
Он умеет различать и типы файлов и можно ограничить количество файлов, прост в установке и имеет маленький размер. Размер файла правда узнать с его помощью не получится
shkarbatov
Отправлено: 12 Августа, 2011 - 21:53:35
Новичок
Покинул форум
Сообщений всего: 47
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
[quote=demot]Могу посоветовать использовать jQuery плагин Multiple File Upload
Он умеет различать и типы файлов и можно ограничить количество файлов, прост в установке и имеет маленький размер. Размер файла правда узнать с его помощью не получится[/quote]
Спасибо конечно, но зачем он мне тогда нужен? =)
Ведь главная задача - узнать размер файла =)
Но все равно спасибо =) (Добавление)
[quote=Мелкий]Как же оно так работает? По коду точно видно, что сохраняется, только если он больше 20мб.
А если файл не загружен - то проверяем его тип, тоже гениально в своей бессмысленности.
PS: ох, ну и стиль. Без IDE не разберёшься.
[quote=Мелкий]Как же оно так работает? По коду точно видно, что сохраняется, только если он больше 20мб.
А если файл не загружен - то проверяем его тип, тоже гениально в своей бессмысленности.
PS: ох, ну и стиль. Без IDE не разберёшься.
Вы правы! Код написан безобразно, о чем я только думал когда его писал, вот переписал в соответствии с вашими рекомендациями:
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.