Работа с файлами на стороне клиента (javascript / jQuery) до / после загрузки / выгрузки - PullRequest
2 голосов
/ 17 декабря 2009

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

Я хочу зашифровать файл локально (в браузере с использованием существующих библиотек) перед его загрузкой. Затем мне нужно будет извлечь и расшифровать его перед тем, как представить файл пользователю. В частности, я не могу отправить файл на сервер для шифрования перед хранением. Шифрование / дешифрование необходимо выполнять на стороне клиента.

Вот примерный поток того, что мне нужно сделать:

  1. Подарите пользователю виджет файла поиска.
  2. Считать файл в сценарий на стороне клиента (т.е. загрузить его локально)
  3. Зашифруйте его на клиенте.
  4. Загрузить зашифрованную версию, очистить клиентскую часть и сохранить данные.

И наоборот:

  1. Загрузите сохраненную зашифрованную версию файла.
  2. Расшифруйте его на клиенте.
  3. Представление дешифрованного файла обратно пользователю для загрузки.

Я искал некоторую кодировку MIME на клиенте (аналогично тому, как вложения электронной почты кодируются MIME перед отправкой в ​​виде простого текста). Я особенно заинтересован в методе jQuery, так как это то, что используется остальной частью моего приложения, но старый добрый javascript будет в порядке.

Любые мысли или указатели очень с благодарностью приняты. Это тот, о котором я думаю в выходные. Итак, заранее спасибо за любые комментарии.

Ответы [ 4 ]

4 голосов
/ 17 декабря 2009

Нет способа сделать это, используя обычный Javascript или JQuery из-за ограничений безопасности в браузере.

Ваша лучшая ставка, вероятно, заключается в том, чтобы взять компонент загрузки на основе Flash с открытым исходным кодом, такой как SWFUpload (Flash может намного больше или на стороне клиента), и добавить туда процедуры шифрования в ActionScript. Создание Java-апплета или элемента управления ActiveX также являются допустимыми параметрами.

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

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

Вы не можете сделать это с помощью JavaScript. Конечно, вы можете просто использовать SSL (например, через HTTPS). Смертельно легко, хорошо проверено, все это. В противном случае вам придется использовать что-то нестандартное, например Flash, Java или ActiveX.

1 голос
/ 04 июня 2015

Принятый ответ устарел здесь. Это можно сделать сейчас, используя HTML5 File API и что-то вроде библиотеки CryptoJS .

0 голосов
/ 27 августа 2011

Я не могу говорить с другими браузерами , но я знаю, что это возможно в Firefox, используя api манипулирования файлами для загрузки / выгрузки файлов от пользователя к клиенту сторонний код (где ими можно манипулировать) и стандартный ajax для загрузки / выгрузки файлов из клиентского кода на сервер.

...