Перейти к публикации

Загрузка аватаров


Рекомендованные сообщения

Проверка размера аватара производится после его полной загрузки на сервер. А что, если аватар весит 1гб? Сервер попросту виснет. Люди намеренно это делают, нашли вот такой глюк с загрузкой. Как исправить?

Ссылка на сообщение
Поделиться на других сайтах

ну тогда мы незнаем. щас тебе как всегда напишут. это не баг. ждите в новой версии такой возможности не будет. =))

Ссылка на сообщение
Поделиться на других сайтах

Проверка размера аватара производится после его полной загрузки на сервер. А что, если аватар весит 1гб? Сервер попросту виснет.

Для справки: файлы на сервер загружают не PHP скрипты, а браузер с использованием серверного ПО (Apache, PHP модуль апача). Скрипты запускаются уже после окончания загрузки, когда данные уже получены сервером, и проверить до, они не могут даже в теории. Вам нужно искать проблемы в серверном ПО, скорее всего просто зависает Апач, при передаче данных, соответственно виснет сервер.

Ссылка на сообщение
Поделиться на других сайтах

Проверка размера аватара производится после его полной загрузки на сервер. А что, если аватар весит 1гб? Сервер попросту виснет. Люди намеренно это делают, нашли вот такой глюк с загрузкой. Как исправить?

Статистика по файлам доступна только с сервера, где они расположены, т.е. узнать, например, размер файла можно только после его загрузки. Но, может, можно как-то разбить поток данных во время загрузки? - не знаю, но вроде бы так сделать можно, ведь даунлоадеры из сети как-то определяют все данные файла и загружают на компьютер.

1. Проверить предварительно файлы в JS перед загрузкой на правильность имени и размера.

2. Разрешить/запретить определенные mime-типы файлов: gif, png и т.д. Например, для аваторов можно разрешить только jpg, gif, png.

Не знаю, как в ДЛЕ аватары подгружаются, но фильтр ставится так:

if($_FILES['FILE']['type'] == 'image/jpeg') {

  ...

} else echo 'Файл не является картинкой формата JPG';

...

if ($_FILES['FILE']['size']!=0 && $_FILES['FILE']['size']<=102400) {

  ...

} else echo 'Файл имеет недопустимый размер';

Как вариант - сделайте загрузку аваторов с другого сервиса, например, Граватара (gravatar.com).

3. Выставить ограничение в php.ini (php.ini должен лежать там же, где и исполнительный скрипт) на загружаемый файл до сотни мегабайт или меньше, чтоб нельзя было гигабайтный файл заливать.

4. Проверить после загрузки: размер файла, количество пикселов, тип и имя. Если разрешение в пикселях больше допустимого или размер в байтах выше нормы, то конвертнуть файл автоматом в другой формат и другое разрешение - поможет в 90% случаев.

Обычно это есть в любой галереи. Видимо, в ДЛЕ пока нет всех этих проверок.

Изменено пользователем zgr
Ссылка на сообщение
Поделиться на других сайтах

Вы абсолютно и в корне неправы. Во первых никакими JS скриптами размер файла вы не проверите и не узнаете, во вторых в DLE все проверки в скриптах есть, только толку от них нет, тк скрипты php запускаются только после полной загрузки файлов, а сервер у автора топика зависает во время загрузки файлов. Это большая и принципиальная разница, никакими скриптами и проверками это не исправить, нужно смотреть конфигурацию сервера и ПО.

Здесь не срабатывают ограничения установленные в php.ini а не ограничения и проверки в скриптах.

Ссылка на сообщение
Поделиться на других сайтах

Я поправлюсь. Сервер не зависает, а просто начинает "подтупливать", потому-что в данный момент на него грузят этот огромный файл. После загрузки сервер начинает работать на все 100%. Т.е. пока грузится файл - сервер кидает на него все свои силы. Загрузился файл - продолжает работать в норме.

Ссылка на сообщение
Поделиться на других сайтах

Процесс загрузки это не ресурсоемкий процесс, на него сервер не может кидать все свои силы при загрузке одного файла, т.к это ему попросту не нужно. Тут нужно смотреть сам сервер, что и как там стоит, может антивирус сканирует поток, и грузит систему, может еще что, так просто не скажешь, для консультации по этому вопросу вам лучше обратится к системному администратору вашего сервера.

Я могу ответить вам только по вопросам относящимся к скриптам PHP, а это только то что они физически не умеют определять размеры файлов пока файл не загрузился и скрипт после этого не запустился.

Ссылка на сообщение
Поделиться на других сайтах

На счет js подглядел здесь: http://www.kavoir.com/2009/01/check-for-file-size-with-javascript-before-uploading.html

Правда, у меня не заработал. Сам в JS не очень силен, но, как-то видел, писали, что помимо АктивХ в ИЕ, в ФФ какие-то фичи есть, но не в курсе, не интересовался.

И вот, кстати, интересно, как же это (определение размера) делается на сайте: http://ajaxbrowser.com/ ?

Ссылка на сообщение
Поделиться на других сайтах

Если вы зайдете в dle и при загрузке файлов выберете массовую загрузку, то получите ответ на свой вопрос "как". Это не JS и не PHP это флеш плагин браузера и только локально в браузере, а не серверно и не решает проблемы автора топика

Ссылка на сообщение
Поделиться на других сайтах

celsoft, я как раз и являюсь администратором данного сервера. Антивирусов никаких не стоит. Apache/2.2.14 (Win32) + MySQL 5.0.51a + PHP 5.2.9 ставил вручную сам, никаких сборок.

Насчет php.ini:

Loaded Configuration File: C:\Server\php\php.ini

Именно этот файл я и меняю.

Изменено пользователем Universal
Ссылка на сообщение
Поделиться на других сайтах

celsoft, я как раз и являюсь администратором данного сервера.

это как раз и не очень хорошо, иначе бы вы не спрашивали и знали почему проблема. Вам нужно найти профессионального специалиста, который корректно настроит сервер. Я например не системный администратор, поэтому сам ничего в этой области не делаю. Есть различные специфические форумы системных администраторов, попробуйте попросить там о помощи. Работа сайта, это не только работа скрипта DLE, это еще и правильное и грамотное сконфигурированное ПО сервера.

Ссылка на сообщение
Поделиться на других сайтах

А что, если аватар весит 1гб? Сервер попросту виснет.

Да тут всё просто. TC на своём домашнем компьютере поднял Apache, PHP, MySQL и пытается грузить гиговую картинку. Считай копирование у себя же с харда на хард через протокол http. Я бы от такой наглости не просто подвисал, а в BSOD выпадал. )))))

Ссылка на сообщение
Поделиться на других сайтах

1. Что такое ТС?

2. Сервер у меня выделенный под вебу, там Windows Server 2003 стоит.

3. Обращусь тогда с вопросом на другой форум. Спасибо.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...