Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Временное хранение большого объёма данных (https://javascript.ru/forum/misc/84662-vremennoe-khranenie-bolshogo-objoma-dannykh.html)

Василий12560 11.11.2022 17:16

Временное хранение большого объёма данных
 
Здравствуйте! Помогите с проблемой: Делаю программу, которая занимается шифрованием данных. Для шифрования больших файлов, я использую прогрессивное шифрование, т. е. прочитал частичку файла и сразу зашифровал, потом ещё частичку и так далее. Но эти зашифрованные данные мне надо где-то накапливать. Если я делаю это прямо в переменной, то данные накапливаются в оперативной памяти компьютера и, конечно, таким образом браузер не сможет обработать достаточно большой файл. Отсюда вопрос:
Куда мне сохранять эти данные?
В какой-нибудь session storage?

voraa 11.11.2022 18:40

Большой это сколько?
session storage тоже ограничена в размерах. Даже еще жестче, чем ОП современного компа.

ksa 12.11.2022 12:10

Цитата:

Сообщение от Василий12560
Куда мне сохранять эти данные?

В фал(ы)...

https://www.youtube.com/watch?v=g50esNW9bqk

voraa 12.11.2022 14:50

Цитата:

Сообщение от ksa
В фал(ы)...

Как это в браузере, не сохраняя предварительно весь файл в памяти?
Если только использовать
https://developer.mozilla.org/ru/doc...ry_Entries_API

ksa 12.11.2022 22:17

Цитата:

Сообщение от voraa
Как это в браузере, не сохраняя предварительно весь файл в памяти?

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

Если его такое устроит - чем не метод!

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

voraa 12.11.2022 23:39

Цитата:

Сообщение от ksa
Он же частями его обрабатывает - пусть частями и сохраняет.

Каждую часть в отдельный файл? Вроде не это нужно.

Вопрос в размерах. Файлы по 50-70Мб я в браузере обрабатывал.
И спокойно в памяти находились и исходный и обработанный.

ksa 13.11.2022 10:35

Цитата:

Сообщение от voraa
Каждую часть в отдельный файл?

ТС может работать только с частями, больше у него не получается.
Значит и файл придется сохранять частями, т.к. "дописывать" этот "метод" (что на видосе) не умеет.
Цитата:

Сообщение от voraa
Файлы по 50-70Мб я в браузере обрабатывал.
И спокойно в памяти находились и исходный и обработанный.

У ТСа видать больше и толще! :D

В любом случае мне не понятно зачем большие объемы ворочить на клиенте... Пусть таким занимаются сервера, у них и "файловых возможностей" больше.

Василий12560 13.11.2022 14:10

Цитата:

Сообщение от voraa (Сообщение 548875)
Большой это сколько?
session storage тоже ограничена в размерах. Даже еще жестче, чем ОП современного компа.

Хотелось бы уметь шифровать файл до 500 мб.

Почему не на сервере?
Когда человек загружает свой файл, он никак не может проверить, что с файлом происходит на сервере. Может, его там ещё и сохранят. А тут все происходит прозрачно, "на глазах" клиента

Aetae 13.11.2022 17:51

MEGA так работает. Можешь погуглить статьи на тему того как там всё организовано.

ksa 13.11.2022 19:23

Цитата:

Сообщение от Василий12560
файл до 500 мб

И где тут нехватка памяти?
Вроде не совсем страшный объем...

Василий12560 14.11.2022 12:29

Цитата:

Сообщение от ksa (Сообщение 548905)
И где тут нехватка памяти?
Вроде не совсем страшный объем...

Мой ноутбук больше 200 осилить не может

Василий12560 14.11.2022 13:01

Цитата:

Сообщение от ksa (Сообщение 548886)

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

voraa 14.11.2022 13:14

Ну нет способа писать файл потоком. Только целиком.
Читать кусками еще можно, а писать в файл пользователя, кусками, ну никак не получится.

Я смутно представляю, какую работу вы выполняете с этими файлами.
Сначала читаете (откуда? с файловой системы пользователя?)
Потом как то шифруете
Потом сохраняете в файловой системе пользователя. Если не помещается он у вас целиком, то только кусками его писать
Потом вам опять зачем то нужен в компе зашифрованный файл.
Если он не помещается у вас в памяти, то и не поместится.
Не придумали еще способа в стакан налить два стакана воды.

ksa 14.11.2022 14:48

Цитата:

Сообщение от Василий12560
Но потом же мне все эти части нужно как то загрузить обратно и соединить воедино.

Не получится впихнуть невпихуемое... :no:

Я-то думал что у тебя в памяти не помещаются данные в процессе работы... А у тебя не помещается даже сам итог.

Василий12560 14.11.2022 14:51

Сейчас задача стоит такая.
1. Считали файл с компьютера пользователя
2. Зашифровали (AES)
3. Скачали уже в зашифрованном виде

Проблема в том, что файл не помещается в оперативной памяти.
То есть его надо шифровать по частям и в каком-то хранилище, которое находится не в оперативной памяти, формировать из этих частей файл. А когда шифрование закончится, переместить (скачать) его из этого хранилища в условные загрузки.

Василий12560 14.11.2022 15:02

Цитата:

Сообщение от ksa (Сообщение 548915)
Не получится впихнуть невпихуемое... :no:

Я-то думал что у тебя в памяти не помещаются данные в процессе работы... А у тебя не помещается даже сам итог.

Да... Я могу сохранять зашифрованные части, например, в IndexedDB. Но потом мне нужно будет соединить их в один файл. И тогда итог тоже не поместится. Тоесть мне нужна постепенная запись файла (поточная да?).

Василий12560 14.11.2022 15:05

Цитата:

Сообщение от voraa (Сообщение 548914)
Ну нет способа писать файл потоком.

Звучит печально. Может, всё-таки как-нибудь и можно

Aetae 14.11.2022 15:16

Василий12560,
https://dumbmatter.com/2021/06/strea...rom-indexeddb/
https://stackoverflow.com/questions/...94861#15994861

voraa 14.11.2022 16:45

Цитата:

Сообщение от Василий12560
3. Скачали уже в зашифрованном виде

Куда скачали? Опять на компьютер пользователя?
Цитата:

Сообщение от Василий12560
Звучит печально. Может, всё-таки как-нибудь и можно

Только https://developer.mozilla.org/en-US/...tem_Access_API
Пробуйте.
Но обратите внимание, что это работает только если страница загружена по https. И работает только в Хрообразных браузерах.


Часовой пояс GMT +3, время: 02:06.