Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

Длинный ответ:Ненадежный.С 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
}

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top