Проверка размера загрузки файла - PullRequest
5 голосов
/ 09 февраля 2011

Проверка - большая проблема, как будто я проверяю в php, что он имеет все функции и т. Д. Мне нужно, чтобы он работал. Но сначала он загружает файл во временную папку, а затем проверяет, что отстой.Если кто-то загружает файл размером 100 МБ, ему нужно подождать время, чтобы не было ошибок, а просто какой-то внутренний php облажался, повесив страницу.

В одну сторону: JS

//file is id of input file
alert(document.getElementById('file').files[0].fileSize);

Это работает в Firefox, Safari, Chrome, я думаю, тоже: НЕ: В опере, конечно, IE тоже, но IE может быть сохранен с помощью файла ActiveXразмер но Опера я все еще застрял.Так довольно непригодно, в любом случае, чтобы обойти это?

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

ДРУГОЕ ОБНОВЛЕНИЕ:

Я дурачился с Rapidshare, чтобы понять, что происходит, я понял, что даже они используют проверку размера файла javascript: P Теперь это прекрасно работает сFirefox и другие, как я сказал, даже IE, поскольку у него есть запасной метод ActiveX, но Opera является жертвой: P В этом случае они не могут выдать причудливую ошибку JavaScript.Но у них есть резервная проверка на стороне сервера, которая длится несколько секунд, не является гладкой, но в конце концов она показывает небольшую ошибку.

Так что просто нужно выяснить эту часть на стороне сервера сейчас без загрузки, и вНа мой взгляд, есть только один способ сделать это:

  1. Некоторая внутренняя ошибка увеличения максимального размера php, которую я могу настроить или запустить какой-нибудь скрипт, чтобы узнать, был ли достигнут максимальный размер или найти превышенный POST или что-то подобное,// НЕТ ИДЕИ ОБ ЭТОМ.Надеюсь, какой-нибудь серверный парень может помочь :) Я думаю, что это то, что решит это, если кто-нибудь здесь гуру php-сервера.

Спасибо И С уважением.Пожалуйста помоги.:)

Ответы [ 3 ]

1 голос
/ 09 февраля 2011

Вот плагин, который использует flash + javascript (MooTools) для загрузки файла.Плюсом этого плагина является то, что он поддерживается, и вы можете Github его.Он может ограничивать максимальный размер и т. Д. И проверять информацию о файле перед загрузкой .Кроме того, есть пример для бэкэнда с использованием PHP о том, как обрабатываются файлы после его загрузки.

Fancyupload

Функции

  • Выбор и загрузканесколько файлов
  • Фильтрация файлов по типу в диалоге выбора
  • Множество возможных событий для добавления собственного поведения
  • Отображение и фильтрация полезной информации о файле перед началом загрузки
  • Ограничение загрузки по количеству файлов, типу или размеру
  • Независимо от платформы и сервера, требуется только Flash9 + (> 95% проникновения), который работает во всех браузерах с установленным

Вот плагин jQuery, который делает то же самое, что и плагин MooTools:

Uploadify

0 голосов
/ 09 февраля 2011

Вы можете использовать решение на стороне сервера.

Используйте $_SERVER['CONTENT_LENGTH'] после попытки загрузить файл. Эта переменная возвращает размер загруженного файла, даже если загрузка не удалась.

if(isset($_SERVER['CONTENT_LENGTH']) && $_SERVER['CONTENT_LENGTH']>2097152)
$error = 'Upload FAILED, file is too large !';

Этот метод отлично работает во всех случаях ошибок при загрузке файла, даже если размер файла превышает MAX_FILE_SIZE, upload_max_filesize или post_max_size (из php.ini)

Дополнительные функции вы можете попробовать http://valums.com/ajax-upload/

0 голосов
/ 09 февраля 2011

Вы можете установить максимальный размер, допустимый в PHP, Javascript и Apache.

Используйте Javascript для максимально удобного использования, так как он сразу предупреждает пользователя.

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

Используйте Apache последнимэто довольно низкий уровень, и я считаю, что проверять слишком большой файл (чтобы предупредить пользователя) сложнее.

...