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.
Существует намеренно нет способа определить полный путь к загруженному файлу, поскольку это может включать конфиденциальную информацию, например имя конечного пользователя.
Ответ 3
Причина, по которой вы не можете, состоит в том, что было бы плохо, если бы браузеры и javascript могли получить доступ к файловой системе клиентов.
Это активно отрицается и может рассматриваться как атака.
Использование jQuery, ограничение размера файла перед загрузкой
Ответ 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>