Как узнать размер файла перед его загрузкой? - PullRequest
6 голосов
/ 13 февраля 2009

У меня есть тег ввода файла в моем веб-приложении. Я хотел бы проверить, что файл не слишком большой, прежде чем отправить его на сервер. Конечно, у меня все еще есть проверка на стороне сервера. Есть ли способ сделать это с помощью JavaScript? Он должен работать в IE7 + и FF3 +. Спасибо.

РЕДАКТИРОВАТЬ: somefileinputobject.files [0] .filesize работает в FF, но не в IE.

Ответы [ 5 ]

2 голосов
/ 13 февраля 2009

Это сложная проблема. Вы должны сделать это с AJAX и использовать заголовки размера файла, отправленные браузером на сервер по запросу POST.

В библиотеке пользовательского интерфейса Yahoo есть инструмент, который поможет с этим. YUI Uploader

0 голосов
/ 13 февраля 2009

У вас действительно не так много вариантов, если вы используете традиционный элемент управления вводом файлов. Вы не можете проверить его на стороне клиента, и он попадет в ваш сконфигурированный maxRequestLength, прежде чем вы получите возможность проверить его на стороне сервера. Вы можете перехватить исключение, которое возникает при превышении maxRequestLength.

0 голосов
/ 13 февраля 2009

Краткий ответ: Нет, вы должны обработать это на сервере.

Длинный ответ: не надежный. С IE вы можете сделать что-то вроде:

function checkSize(filespec) {
var fso, f, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec);
s = f.size;
// Do something with var s
}

Но это можно легко оценить с помощью настроек безопасности браузера или использование другого браузера или платформы.

0 голосов
/ 13 февраля 2009

Не может быть надежно сделано с Javascript для всех браузеров, но вы можете ограничить общий размер публикуемых данных с web.config

0 голосов
/ 13 февраля 2009

Javascript не может этого сделать. Это будет иметь серьезные проблемы с безопасностью. Возможно, вспышка может, хотя.

...