Загружается ли файл на сайт, даже если он не должен быть загружен? - PullRequest
0 голосов
/ 25 июня 2010

Я уверен, что это один из самых эпических титулов в истории.Итак, у меня есть форма загрузки как здесь .Я сделал так, чтобы люди могли загружать свои файлы только до 1 МБ.Но, если я попытаюсь загрузить, например, файл размером 1 ГБ, пройдет много времени, прежде чем он выдаст мне ошибку.Итак, возникает вопрос.Перед проверкой размера файла загружается ли этот файл на мой хостинг или он берет ресурсы с моего хостинга?Почему проходит много веков, прежде чем выдает ошибку, хотя, если я пытаюсь загрузить файл размером 2 МБ, выдает ошибку за 1 секунду?Спасибо за ваши объяснения.

Ответы [ 3 ]

0 голосов
/ 25 июня 2010

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

Все, что вы делаете для проверки на стороне клиента, будет, конечно, зависеть от клиента. Так что нет 100% надежного способа сделать это. Artefacto указал на один хороший способ поймать большинство пользователей. Есть также объект JavaScript ActiveX, который может помочь (http://www.kavoir.com/2009/01/check-for-file-size-with-javascript-before-uploading.html)), но, опять же, пользователи могут легко отключить его (даже совершенно непреднамеренно) или иметь браузеры, которые его вообще не поддерживают.

0 голосов
/ 25 июня 2010

Имея быстрый гугл по вашей проблеме, я нашел эту старую тему stackoverflow, Использование jQuery, ограничение размера файла перед загрузкой Кажется, что невозможно остановить людей, загружающих файлы на большую клиентскую сторону, но только с помощью flash / Java, возможно, это программное обеспечение поможет http://www.swfupload.org/. 9-й пункт в описании: Управление размером файла перед началом загрузки.

Привет

Люк

0 голосов
/ 25 июня 2010

Вы должны включить ввод, как:

 <input type="hidden" name="MAX_FILE_SIZE" value="30000" />

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

Я не думаю, что PHP будет хранить файлы, превышающие максимальный размер сообщения, разрешенный в php.ini, если пользователь отправит его (на сервере не будет файла 1 ГБ, занимающего ненужное место); однако пользователь должен отправить все данные, прежде чем он получит ответ об ошибке для сервера, поскольку в протоколе HTTP нет условий для прерывания запроса клиента и преждевременной отправки ответа.

Имейте в виду, что если разрешить огромные данные POST и отложить проверку размера файла на ваш PHP-скрипт, будет использовано больше дискового пространства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...