как проверяют размер файла с помощью HTML и JavaScript на стороне клиента

Краткое изложение от моего скромного знания:

существуют некоторые легкие вычислительные проблемы (как нахождение кратчайшего пути между двумя точками в графике), который может быть вычислен довольно быстро (O (n^k), где n является размером входа, и k является константой (в случае графиков, это - количество вершин или краев)).

Другие проблемы, как нахождение пути, который пересекает каждую вершину в графике или получении закрытого ключа RSA от открытого ключа, более трудны (O (e^n)).

, Но CS говорят, говорит, что проблема состоит в том, что мы не можем 'преобразовать' недетерминированную Машину Тьюринга в детерминированную, мы можем, однако, преобразовать недетерминированные конечные автоматы (как regex синтаксический анализатор) в детерминированные (хорошо, Вы можете, но время выполнения машины займет много времени). Таким образом, мы должны попробовать каждый возможный путь (обычно умные преподаватели CS могут исключить несколько).

Это интересно, потому что ни у кого даже нет идеи решения. Некоторые говорят, что это верно, некоторые говорят, что это - ложь, но нет никакого согласия. Другая интересная вещь состоит в том, что решение было бы вредно для общественности/шифрований с закрытым ключом (как RSA). Вы могли повредить их так же легко, как генерация ключа RSA теперь.

И это - довольно вдохновляющая проблема.

9
задан RRikesh 5 November 2014 в 10:45
поделиться

2 ответа

UPDATE 2013 as of this edit, the File API is supported in all major browsers, and in IE as of version 10

http://caniuse.com/#search=file%20api

You may still wish to use SWFUpload if you still need to support IE9 and under, though at this point it should probably be more of a fallback, since the html5 file api has support on mobile platforms where SWFUpload cannot reach. The html5 file api is based on firefox's file api as noted below.

See also this duplicate question Клиент Проверяет размер файла с помощью HTML5?

ОБНОВЛЕНИЕ: Firefox изменил свой API на этот https://developer.mozilla.org/en/DOM/FileReader

Вы можете это сделать в firefox вот так

html:

 

javascript:

var filesize = document.forms[0].file.files[0].fileSize

если есть способ сделать это в IE, я этого не знаю. Вероятно, это связано с ActiveX или другой подобной ерундой.

править: Я нашел это здесь , КАК ЭТО ДЕЛАТЬ В IE

<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>
13
ответ дан 4 December 2019 в 10:32
поделиться

Возможно, вы могли бы вместо этого использовать SWFUpload , маленькое Flash-приложение, которое обрабатывает загрузку на стороне клиента за вас. Из их списка функций:

  • Загрузить несколько файлов одновременно с помощью Ctrl / Shift-выбора в диалоговом окне
  • Обратные вызовы Javascript для всех событий
  • Получить информацию о файле до начала загрузки
  • Стилизовать элементы загрузки с помощью XHTML и css
  • Отображение информации во время загрузки файлов с использованием HTML
  • Не требуется перезагрузка страницы
  • Работает на всех платформах / браузерах, поддерживающих Flash.
  • Плавно переход на обычную форму загрузки HTML, если Flash или javascript недоступны
  • Управление размер файла перед началом загрузки
  • Отображать только выбранные типы файлов в диалоговом окне
  • Очередь загрузок, удалите / добавьте файлы перед началом загрузки
5
ответ дан 4 December 2019 в 10:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: