Обработка файлов на стороне клиента (javascript/jQuery) до/после загрузки/выгрузки

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

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

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

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

И наоборот:

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

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

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


person Mark    schedule 17.12.2009    source источник
comment
Будет ли проблема безопасности, даже если вы можете сделать это, даже если вы можете сделать это? Тот, от кого вы хотите защитить содержимое файла, также может прочитать ваш исходный код JS, верно?   -  person tony-p-lee    schedule 17.12.2009


Ответы (4)


Это невозможно сделать с помощью простого Javascript или JQuery из-за ограничений безопасности в браузере.

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

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

person Pekka    schedule 17.12.2009
comment
Я уже начал так думать. Спасибо. У меня нет проблем с просмотром Flash, так что я изучу это. Спасибо Пекка. - person Mark; 17.12.2009

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

person T.J. Crowder    schedule 17.12.2009

Принятый ответ здесь устарел. Теперь это можно сделать с помощью файлового API HTML5 и чего-то вроде библиотеки CryptoJS.

person Valeriu Paloş    schedule 04.06.2015

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

person rampion    schedule 27.08.2011