Как я могу получить размер загружаемого файла с помощью простого Javascript?
-
05-07-2019 - |
Вопрос
У меня есть функция загрузки файла на одной из страниц.Я проверяю расширение файла с помощью JavaScript.Теперь я хочу запретить пользователю загружать файл размером более 1 МБ.Есть ли какой-нибудь способ, которым я могу проверить размер загружаемого файла с помощью JavaScript?
Мой код в настоящее время выглядит следующим образом:
<script language="JavaScript">
function validate() {
var filename = document.getElementById("txtChooseFile").value;
var ext = getExt(filename);
if(ext == "txt" || ext == "csv")
return true;
alert("Please upload Text files only.");
return false;
}
function getExt(filename) {
var dot_pos = filename.lastIndexOf(".");
if(dot_pos == -1)
return "";
return filename.substr(dot_pos+1).toLowerCase();
}
</script>
Решение
Кроме того, что при получении имени файла вы не сможете узнать другие подробности о файле в javascript, включая его размер.
Вместо этого вы должны сконфигурировать серверный скрипт для блокировки загрузки негабаритного размера.
Другие советы
См. http://www.w3.org/TR/FileAPI/ . Поддерживается Firefox 3.6; Я не знаю ни о каких других браузерах. Р>
В onchange
событии <input id="fileInput" type="file" />
просто:
var fi = document.getElementById('fileInput');
alert(fi.files[0].size); // maybe fileSize, I forget
Вы также можете вернуть содержимое файла в виде строки и т. д. Но опять же, это может работать только с Firefox 3.6.
Теперь можно получить размер файла, используя чистый JavaScript.Почти все браузеры поддерживают FileReader, который вы можете использовать для чтения размера файла, а также для отображения изображения без загрузки файла на сервер. Ссылка
Код:
var oFile = document.getElementById("file-input").files[0]; // input box with type file;
var img = document.getElementById("imgtag");
var reader = new FileReader();
reader.onload = function (e) {
console.log(e.total); // file size
img.src = e.target.result; // putting file in dom without server upload.
};
reader.readAsDataURL(oFile );
Вы можете получить размер файла непосредственно из объекта file, используя следующий код.
var fileSize = oFile.size;
Большинство из этих ответов устарели. В настоящее время можно определить размер файла на стороне клиента в любом браузере, который поддерживает File API. Это включает, в значительной степени, все браузеры, кроме IE9 и старше. Р>
Это может быть возможно при использовании большого количества специфичного для браузера кода. Взгляните на источник TiddlyWiki , который позволяет сохранить себя на жестком диске пользователя, подключившись к Windows Хост скриптов (IE), XPCOM (Mozilla) и т. Д.
Я не думаю, что есть какой-либо способ сделать это с простым JS с веб-страницы.
Может быть, с расширением браузера, но со страницы javascript не может получить доступ к файловой системе по соображениям безопасности.
Flash и Java должны иметь схожие ограничения, но, возможно, они немного менее строгие.
невозможно. было бы серьезной проблемой безопасности, позволяющей запускать сценарии на стороне клиента, которые могут считывать информацию о файле с жесткого диска конечного пользователя.
Смотрите здесь:
http: // www.kavoir.com/2009/01/check-for-file-size-with-javascript-before-uploading.html р>
Что касается людей, которые говорят, что это должно быть сделано на стороне сервера, они абсолютно уверены в этом. Р>
В моем случае, хотя максимальный размер, который я выберу, кроме 128 МБ, если пользователь пытается загрузить что-то 130 МБ, ему не нужно ждать 5-минутное время загрузки, чтобы определить, что оно слишком большое, поэтому мне нужно сделать дополнительная проверка перед отправкой страницы для удобства использования.