Подтвердить что ты не робот

Файловый API, Постоянная ссылка на локальный файл

В настоящее время я работаю над веб-сайтом script на основе игры (для переноса игры в Интернет). Скрипты загружают данные с моего веб-хоста, поэтому загрузка идет медленно (приходится загружать каждый файл: карты, модели, текстуры,...). Чтобы исправить это, я добавил параметр, который позволяет пользователям выбирать свои локальные данные игры на своем компьютере (используя File API - перетаскивание) для синтаксического анализа контента непосредственно из локального компьютера и предотвращения загрузки нескольких мегаданных из Интернета, результат невероятно быстрый.

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

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

Примечание: игровые данные имеют значение ~ 2Go, поэтому его невозможно сохранить в API FileSystem (и я не хочу его копировать, это пространство для копирования, когда вы может просто сохранить ссылку на него).

Спасибо:)

4b9b3361

Ответ 1

У вас должен быть вход от пользователя

Невозможно получить доступ к файлам на клиентском компьютере без подтверждения пользователем. Как только пользователь выберет файл (вы можете прослушать его с событием change), вы можете затем использовать FileReader API, например, чтобы прочитайте файл.

document.getElementById("input").addEventListener("change", function() {
    const fs = new FileReader();
    fs.readAsText(this.files[0]);
    fs.onloadend = function() {
        document.getElementById("output").innerText = fs.result;
    }
});
<input id="input" type="file" />
<div id="output"></div>

Ответ 2

Возможно, вам захочется использовать IndexedDB. Он поддерживается в последних браузерах, включая Chrome, Firefox и Safari (macOS и iOS). IndexedDB позволяет сохранять Blob, File или ArrayBuffer как значения в хранилище объектов IndexedDB.

Проверьте IndexedDB: сохраните файл как файл или Blob или ArrayBuffer. Каков наилучший вариант?.