Теоретически невозможно получить размер файла, который будет загружен с использованием Javascript? - PullRequest
1 голос
/ 15 декабря 2009

Как насчет

<script language="JavaScript">
function A()
{
var oas = new ActiveXObject("Scripting.FileSystemObject");
var d = document.a.b.value;
var e = oas.getFile(d);
var f = e.size;
var mb=f/(1024);
alert(mb + "kilo bytes");
}
</script>

Ответы [ 5 ]

5 голосов
/ 15 декабря 2009

Вы не можете получить размер файла самостоятельно, но браузер отправит кодированный размер файла на сервер в заголовке до фактических данных файла.

Итак, вы могли бы начать загрузку, а затем отправить запрос AJAX на сервер, спрашивая размер файла. Но есть еще одна загвоздка: браузер может закодировать файл для передачи. Часто это base64, поэтому кодированный размер! = Размер файла, но вы можете рассчитать исходный размер файла: orig = encodedSize * 2 / 3

3 голосов
/ 15 декабря 2009

Javascript запускается в песочнице и не имеет права получать информацию об объекте файла из вашей локальной системы ActiveX относится только к IE и не сможет сделать это в других браузерах.

Ошибки реализации песочницы

Веб-браузеры могут работать JavaScript вне песочницы, с привилегиями, необходимыми для Например, создавать или удалять файлы. из Конечно, такие привилегии не подразумеваются для предоставления кода из Интернета.

2 голосов
/ 15 декабря 2009

Да, это невозможно.

ActiveXObject будет работать только в Windows / InternetExplorer.

0 голосов
/ 15 декабря 2009

Этот вопрос часто встречается среди нетехнических пользователей и начинающих программистов, которые в основном концентрируют свое внимание на том, как все делается, а не на том, почему. Конечно, вы можете найти способ сделать это в Internet Explorer, используя ActiveX или в Firefox, используя расширение, но вам все равно нужно остановиться и подумать, правильно ли это сделать. Вам нужно предоставить на удаленном сайте доступ к файловой системе пользователя, и цена за это слишком велика, чтобы получить очень небольшой доход от знания на стороне клиента размера файла.

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

В редких случаях это необходимо, правильная вещь - это использовать кросс-браузерный плагин, такой как Java-апплет или Flash. Эти плагины должны быть подписаны, чтобы пользователи знали, кому предоставляется доступ к их файловым системам.

0 голосов
/ 15 декабря 2009

Невозможно получить размер файла, используя javascript, таким образом, чтобы он работал во всех браузерах.

Вы можете загрузить файл асинхронно, используя флэш-загрузчик, такой как uploadify или swfupload, а затем, используя обратный вызов oncomplete, получить размер файла ... но это действительно все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...