В Angular, как просто проверить пароль zip-файла перед загрузкой - PullRequest
2 голосов
/ 14 июля 2020

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

В настоящее время пароль проверяется в BE только после загрузки файла (что может занять несколько минут, поскольку файлов может быть несколько ГБ), а если пароль неверен, пользователь получит сообщение приложения (не очень важно, как это работает), в котором говорится, что загрузка не удалась, пароль указан неверно, и ему придется начать весь процесс с нуля.

Я хочу сделать так, чтобы процесс загрузки даже не запускался, если предоставленный пароль неверен. Так; как мне проверить пароль только для zip-файла в Angular (9) без извлечения всего этого файла?

1 Ответ

1 голос
/ 14 июля 2020

привет, StackOverflow!

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

Причина в том, что браузеры у вас еще нет доступа к файловой системе. (API собственной файловой системы в настоящее время находится в пробной версии chrome origin, проверьте здесь для получения дополнительной информации и будущих обновлений совместимости с браузерами)

Вы можете попробовать использовать файловую систему в памяти в браузер в качестве замены, например memfs в сочетании с memfs-webpack .

Но имейте в виду:

  • Браузеры ограничивают объем оперативной памяти, доступной для веб-страницы. sh ваш веб-сайт, скорее всего, будет взломан, если ваш zip-архив слишком велик!
  • Процесс извлечения zip-архива может занять очень много времени. Используйте сервис-воркер для извлечения zip-архива в файловую систему в памяти.
  • Поскольку браузеры обычно не имеют доступа к файловой системе, вероятно, нет библиотеки извлечения zip-архива, которая могла бы работать в браузере. Возможно, вам потребуется перенести существующую библиотеку из nodejs, чтобы иметь возможность работать в браузере.

Я нашел эту страницу, которая, кажется, представляет собой zip-извлечение в чистом виде JavaScript в браузере : https://zipextractor.app/ Они утверждают, что не отправляют файлы на какой-либо сервер для извлечения, поэтому вы можете найти там инструменты, необходимые для реализации этой функции для себя.

Надеюсь, это было полезно! Бенджамин

...