Javascript для проверки размера файла перед загрузкой в ​​Internet Explorer

Можно ли использовать Javascript для проверки размера файла (на стороне клиента), прежде чем он будет фактически загружен на сервер?

Приложение построено на EXTJS и Java и ограничено использованием Internet Explorere 7 на компьютерах под управлением Windows XP. Запрещено использование activeX.

Рабочий процесс таков: Пользователь выбирает файл для загрузки. Валидация запускается немедленно, чтобы проверить тип файла и размер файла. Если размер файла превышает лимит, GUI запросит ошибку. Если размер файла ограничен, полный путь к файлу будет передан на конец сервера (Java-сервлет), который будет загружен.

Является ли проверка файлов и чтение полного пути к файлу возможным с помощью javascript?

Ответ 1

Это возможно с помощью объектов ActiveX.

<html>
<head>
<script>
function getSize()
{
    var myFSO = new ActiveXObject("Scripting.FileSystemObject");
    var filepath = document.upload.file.value;
    var thefile = myFSO.getFile(filepath);
    var size = thefile.size;
    alert(size + " bytes");
}
</script>
</head>
<body>
<form name="upload">
<input type="file" name="file">
<input type="button" value="Size?" onClick="getSize();">
</form>
</body>
</html>

Ответ 2

В настоящее время нет возможности переносить размер загруженного файла из веб-браузера. HTML5 File API делает это возможным, но недоступным в MSIE7 - он в настоящее время находится на пути к MSIE10.

Существует намеренно нет способа определить полный путь к загруженному файлу, поскольку это может включать конфиденциальную информацию, например имя конечного пользователя.

Ответ 4

Пожалуйста, попробуйте код ниже,

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.js"></script>
<script type="text/javascript">
$(function() {
$("document").ready(function(){
        $("#myFile1").change(function() {

        var f1=document.getElementById("myFile1").value;
        if((f.size||f.fileSize)==09765625)
        {
        alert("file size is less than 1mb");
        }
        else
        {
        alert("file size should not exceed more than 1mb");
                $(this).val($.data(this, 'f'));
        return false;
        }

            });
});
})
</script>
</head>
<body>

<input type='file' name="file" id="myFile1" />

</body>
</html>