#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).В браузере загрузка файлов работает, но, опять же, я не могу использовать ее таким образом.