Краткое изложение от моего скромного знания:
существуют некоторые легкие вычислительные проблемы (как нахождение кратчайшего пути между двумя точками в графике), который может быть вычислен довольно быстро (O (n^k), где n является размером входа, и k является константой (в случае графиков, это - количество вершин или краев)).
Другие проблемы, как нахождение пути, который пересекает каждую вершину в графике или получении закрытого ключа RSA от открытого ключа, более трудны (O (e^n)).
, Но CS говорят, говорит, что проблема состоит в том, что мы не можем 'преобразовать' недетерминированную Машину Тьюринга в детерминированную, мы можем, однако, преобразовать недетерминированные конечные автоматы (как regex синтаксический анализатор) в детерминированные (хорошо, Вы можете, но время выполнения машины займет много времени). Таким образом, мы должны попробовать каждый возможный путь (обычно умные преподаватели CS могут исключить несколько).
Это интересно, потому что ни у кого даже нет идеи решения. Некоторые говорят, что это верно, некоторые говорят, что это - ложь, но нет никакого согласия. Другая интересная вещь состоит в том, что решение было бы вредно для общественности/шифрований с закрытым ключом (как RSA). Вы могли повредить их так же легко, как генерация ключа RSA теперь.
И это - довольно вдохновляющая проблема.
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>
Возможно, вы могли бы вместо этого использовать SWFUpload , маленькое Flash-приложение, которое обрабатывает загрузку на стороне клиента за вас. Из их списка функций: