2009-03-23 3 views
2

Если бы это было возможно сделать до публикации формы, это может спасти меня, чтобы загрузить файл на мой сервер ...Можно ли вычислить идентификатор SHA1 файла с помощью Javascript?

+0

Возможный дубликат [Как получить значение хэш-файла пользователя с помощью Javascript или Flash?] (Http://stackoverflow.com/questions/539488/how-would-i-get-a-hash-value -of-a-users-file-with-javascript-or-flash) – cHao

ответ

1

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

Но here's реализация SHA1 в JavaScript.

0

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

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

0

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

Если вы должны это сделать, и у вас есть способ поместить двоичную информацию файла в ваш скрипт, то there's plenty сторонних скриптов, которые вы можете использовать. Here's one, например.

+0

Вторая ссылка не работает. Исправлена ​​связь с sha1: http://pajhome.org.uk/crypt/md5/index.html – loentar

1

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

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

См this link для хорошей реализации (passpack и довольно много проектов ОС использовать его)

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

2

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

См. How would I get a Hash value of a users file with Javascript or Flash? для примера и компактной реализации SHA-1.

0

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

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

Смежные вопросы