Можно ли вычислить идентификатор файла SHA1, используя Javascript? - PullRequest
3 голосов
/ 24 марта 2009

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

Ответы [ 7 ]

2 голосов
/ 24 марта 2009

На самом деле вы можете читать содержимое файла на стороне клиента, если оно выбрано в поле загрузки файла и вы используете Firefox. Смотрите массив input.files . Тогда вы действительно можете его хешировать, хотя это может быть довольно медленно.

См. Как получить значение Hash файла пользователя с Javascript или Flash? для примера и компактной реализации SHA-1.

1 голос
/ 31 января 2014

Можно прочитать их локальный файл, используя интерфейс файла HTML5: https://developer.mozilla.org/en-US/docs/Web/API/File

И затем вы можете использовать библиотеку для вроде Crypto.js https://code.google.com/p/crypto-js/, чтобы завершить хэш над прочитанным текстом.

1 голос
/ 24 марта 2009

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

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

См. эту ссылку для хорошей реализации (passpack и довольно много проектов ОС используют ее)

Edit: Как уже отвечали другие, на самом деле получение содержимого файла может быть совсем другим вопросом - поэтому, если вы не используете что-то вроде Google Gears или Adobe AIR, это будет практически невозможно.

1 голос
/ 24 марта 2009

Для этого вам нужно загрузить двоичную информацию файла в JavaScript. Что невозможно.

Но вот реализация SHA1 в JavaScript.

0 голосов
/ 24 марта 2009

Вы можете сделать это с помощью Java-апплета. Я никогда не использовал ни одного из них, но есть довольно много Java-апплетов для загрузки. Сам алгоритм хеширования доступен в Java и доступен через java.security.MessageDigest. Если у клиента нет подключаемого модуля Java, вы можете просто вернуться к обычной загрузке и хэшированию на сервере.

Примечание: в зависимости от того, почему вы хэшируете файл, вы, вероятно, захотите повторно хэшировать его на сервере после загрузки, а не доверять клиенту.

0 голосов
/ 24 марта 2009

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

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

0 голосов
/ 24 марта 2009

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

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

...