Есть ли способ проверить размер файла перед его загрузкой с помощью JavaScript?
источник
Есть ли способ проверить размер файла перед его загрузкой с помощью JavaScript?
Да , есть новая функция от W3C, которая поддерживается некоторыми современными браузерами, File API . Он может использоваться для этой цели, и его легко проверить, поддерживается ли он, и переключиться (если необходимо) на другой механизм, если это не так.
Вот полный пример:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Show File Data</title>
<style type='text/css'>
body {
font-family: sans-serif;
}
</style>
<script type='text/javascript'>
function showFileSize() {
var input, file;
// (Can't use `typeof FileReader === "function"` because apparently
// it comes back as "object" on some browsers. So just see if it's there
// at all.)
if (!window.FileReader) {
bodyAppend("p", "The file API isn't supported on this browser yet.");
return;
}
input = document.getElementById('fileinput');
if (!input) {
bodyAppend("p", "Um, couldn't find the fileinput element.");
}
else if (!input.files) {
bodyAppend("p", "This browser doesn't seem to support the `files` property of file inputs.");
}
else if (!input.files[0]) {
bodyAppend("p", "Please select a file before clicking 'Load'");
}
else {
file = input.files[0];
bodyAppend("p", "File " + file.name + " is " + file.size + " bytes in size");
}
}
function bodyAppend(tagName, innerHTML) {
var elm;
elm = document.createElement(tagName);
elm.innerHTML = innerHTML;
document.body.appendChild(elm);
}
</script>
</head>
<body>
<form action='#' onsubmit="return false;">
<input type='file' id='fileinput'>
<input type='button' id='btnLoad' value='Load' onclick='showFileSize();'>
</form>
</body>
</html>
И вот оно в действии. Попробуйте это с последней версией Chrome или Firefox.
Немного не по теме, но: обратите внимание, что проверка на стороне клиента не может заменить проверку на стороне сервера. Проверка на стороне клиента предназначена исключительно для того, чтобы обеспечить более приятное взаимодействие с пользователем. Например, если вы не разрешаете загружать файл размером более 5 МБ, вы можете использовать проверку на стороне клиента, чтобы убедиться, что выбранный пользователем файл имеет размер не более 5 МБ, и дать ему приятное дружеское сообщение, если оно (поэтому они не тратят все это время на загрузку только для того, чтобы получить результат на сервере), но вы также должны применять этот лимит на сервере, так как все ограничения на стороне клиента (и другие проверки) могут быть обойдены.
Используя jquery:
источник
MiB
если вы рассчитываете на основе1024
.Работает для динамического и статического файлового элемента
Решение Javascript Only
источник
size
свойство$(obj).files[0].size/1024/1024;
Но изменил это наobj.files[0].size/1024/1024;
НетДа, используя File API в новых браузерах. Смотрите ответ TJ для деталей.Если вам также требуется поддержка старых браузеров, вам придется использовать загрузчик на основе Flash, такой как SWFUpload или Uploadify, чтобы сделать это.
SWFUpload Особенности демо показывает , как
file_size_limit
работает установка.Обратите внимание, что для этого (очевидно) требуется Flash, плюс способ его работы немного отличается от обычных форм загрузки.
источник
Это довольно просто.
источник
Если вы используете jQuery Validation, вы можете написать что-то вроде этого:
источник
Я сделал что-то подобное:
источник
Я использую одну основную функцию Javascript, которую я обнаружил на сайте Mozilla Developer Network https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications , а также другую функцию с AJAX и изменил в соответствии с моими потребностями. Он получает идентификатор элемента документа относительно места в моем HTML-коде, где я хочу записать размер файла.
ура
источник
Несмотря на ответ на вопрос, я хотел опубликовать свой ответ. Может пригодиться будущим зрителям. Вы можете использовать его, как показано в следующем коде.
источник
Пример JQuery, представленный в этой теме, был чрезвычайно устаревшим, и Google не помог, так что вот моя ревизия:
источник
Вы можете попробовать этот Fineuploader
Работает нормально под IE6 (и выше), Chrome или Firefox
источник
Если вы установили Ie «Режим документа» на «Стандарты», вы можете использовать простой метод javascript «Размер», чтобы получить размер загружаемого файла.
Установите «Режим документа» в «Стандарты»:
Затем используйте метод javascript «size» для получения размера загружаемого файла:
Меня устраивает.
источник