Ответ 1
Другое, что при поиске имени файла вам не удастся узнать какие-либо другие подробности о файле в javascript, включая его размер.
Вместо этого вы должны настроить серверную часть script для блокировки негабаритной загрузки.
У меня есть функция загрузки файлов на одной из страниц. Я проверяю расширение файла с помощью 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, включая его размер.
Вместо этого вы должны настроить серверную часть script для блокировки негабаритной загрузки.
См. 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 );
Вы можете получить размер файла непосредственно из файла с помощью следующего кода.
var fileSize = oFile.size;
Большинство из этих ответов являются устаревшими. В настоящее время можно определить размер файла на стороне клиента в любом браузере, который поддерживает API файлов. Это включает, в основном, все браузеры, отличные от IE9 и старше.
Возможно, это будет возможно с использованием большого количества кода, специфичного для браузера. Взгляните на источник TiddlyWiki, которому удается сохранить себя на жестком диске пользователя, подключившись к Windows Scripting Host (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 минутного времени загрузки, чтобы узнать, что он слишком большой, поэтому мне нужно сделать дополнительную проверку перед отправкой страницы для удобства использования.