Вы можете использовать новый Файловый API (да, действительно) в браузерах, которые его поддерживают, а это в основном все, кроме IE9 и более ранних .Подобные вещи также возможны через Flash в браузерах, в которых установлена Flash, поэтому вы можете иметь каскад проверок ( Поддерживает ли браузер File API? Да, использовать его; нет, есть ли у него Flash? Да,используйте его, нет ... ).Обратите внимание, что независимо от того, что вы делаете на стороне клиента, вы должны также применять ограничение на сервере, потому что вы не можете рассчитывать на любую проверку на стороне клиента, когда-либо.
Re File API, это свойство size
в записи для файла в коллекции files
ввода файла.Вот как вы можете проверить, поддерживается ли File API, и использовать его для получения размера файла в соответствующем оборудованном браузере:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Show File Size</title>
<style type='text/css'>
body {
font-family: sans-serif;
}
</style>
<script type='text/javascript'>
function showFileSize() {
var input, file;
if (typeof window.FileReader !== 'function') {
write("The file API isn't supported on this browser yet.");
return;
}
input = document.getElementById('filename');
if (!input) {
write("Um, couldn't find the filename element.");
}
else if (!input.files) {
write("This browser doesn't seem to support the `files` property of file inputs.");
}
else if (!input.files[0]) {
write("Please select a file before clicking 'Show Size'");
}
else {
file = input.files[0];
write("The size of file '" + file.name + "' is " + file.size + " bytes");
}
function write(msg) {
var p = document.createElement('p');
p.innerHTML = msg;
document.body.appendChild(p);
}
}
</script>
</head>
<body>
<form action='#' onsubmit="return false;">
<input type='file' id='filename'>
<input type='button' id='btnShowSize' value='Show Size' onclick='showFileSize();'>
</form>
</body>
</html>
(Это адаптировано из моего ответа на этот другойвопрос здесь в StackOverflow о размерах изображения.)
Опять же, вы не можете рассчитывать на эту или любую другую проверку на стороне клиента.Вы должны также применять ограничение на стороне сервера.