Как узнать размер файла перед его загрузкой?
-
23-08-2019 - |
Вопрос
У меня есть тег ввода файла в моем веб-приложении.Я хотел бы убедиться, что файл не слишком велик, прежде чем отправлять его на сервер.Конечно, у меня все еще есть серверная часть проверки.Есть ли способ сделать это с помощью 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.