Создайте и сохраните файл из Cordova/Inappbrowser

#cordova #download

Вопрос:

Я запускаю пользовательский HTML-код в приложении Acode, которое использует браузер Cordova inappbrowser. Я могу загрузить содержимое текстового файла через fetch и FileReader в текстовую область, где я могу его изменить. Теперь я хотел бы сохранить измененное содержимое обратно в файл (или другой файл, если это невозможно).

Я перепробовал много предложенных ответов, подобных этому:

     let a = document.createElement('a');
    a.href = "data:text/plain;charset=utf-8,"   encodeURIComponent("some text");
    a.download = 'name.txt';
    a.click()
 

или этот:

     var blob = new Blob(["some text"], {
        "type": "text/plain"
    });
    var a = document.createElement("a");
    a.download = "name.txt";
    a.href = (window.URL || window.webkitURL || window || {}).createObjectURL(blob);
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
 

Но ни один из них не работает.

Поскольку эти сценарии работают в моем браузере Android по умолчанию, я подумал о том, чтобы выполнить загрузку другим способом: отправить запрос на открытие ссылки/большого двоичного объекта в браузер по умолчанию, а затем позволить этому браузеру по умолчанию выполнить загрузку. Поэтому я попробовал это:

     var blob = new Blob(["aaaa"], {
        type: 'text/plain'
    });
    var blobUrl = URL.createObjectURL(blob);
    window.open(blobUrl, '_system', 'location=yes');
 

Но и здесь это опять не работает. Также, если я жестко закодирую это в html: <a href="#" onclick="window.open(encodeURI('https://google.com/'),'_system')">link</a>; ссылка на самом деле открыта в cordova inappbrowser, а не во внешнем браузере по умолчанию.

Есть идеи, как я могу создать файл?

Я попробовал два других подобных приложения TrebEdit и редактор Spck, и у меня та же проблема с обоими.

Кроме того, я нашел один способ заставить его работать в Acode, но он не соответствует моим потребностям: в настройках Acode я могу выбрать предварительный просмотр с помощью браузера вместо inappbrowser (но мне нужно использовать inappbrowser).В браузере загрузка файлов работает, но, опять же, я не могу использовать ее таким образом.