Cordova:如何使用 vanilla JS 保存文本文件
Posted
技术标签:
【中文标题】Cordova:如何使用 vanilla JS 保存文本文件【英文标题】:Cordova: How to save text files with vanilla JS 【发布时间】:2020-10-12 21:30:12 【问题描述】:我要将数组转换为文本文件以发送到不同的设备。我曾尝试使用插件和库来做到这一点,但这似乎对我不起作用。我很高兴找到不使用任何插件或库的this 解决方案。遗憾的是,它在我的浏览器中有效,但在应用程序本身中尝试时似乎无效。
来自网站的代码:
const downloadToFile = (content, filename, contentType) =>
const a = document.createElement('a');
const file = new Blob([content], type: contentType);
a.href= URL.createObjectURL(file);
a.download = filename;
a.click();
URL.revokeObjectURL(a.href);
;
document.querySelector('#btn2').addEventListener('click', () =>
const textArea = 'This is the text that will be in the file'
downloadToFile(textArea, 'data.txt', 'text/plain');
);
现在我想知道有没有办法把它变成可以在 android 上运行的东西?
【问题讨论】:
【参考方案1】:在带有 cordova 的 Android 上,假设您使用数组 (my_array) 作为文件的源
window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, function (dirEntry)
console.log('file system open: ' + dirEntry.name);
var isAppend = false;
createFile(dirEntry, nombreFichero, isAppend);
, onErrorLoadFs);
然后是创建文件的函数:
function createFile(dirEntry, fileName, isAppend)
var array_file = my_array.join("\n");
dirEntry.getFile(fileName, create: true, exclusive: false , function (fileEntry)
//writeFile(fileEntry, null, isAppend);
writeFile(fileEntry, array_file, isAppend);
, onErrorCreateFile);
还有一个写入文件的函数:
function writeFile(fileEntry, dataObj, isAppend)
fileEntry.createWriter(function (fileWriter)
fileWriter.onwriteend = function ()
console.log("Successful file write..." + fileEntry.name);
;
fileWriter.onerror = function (e)
console.log("Failed file read: " + e.toString());
;
fileWriter.write(dataObj);
);
【讨论】:
感谢您的回复!不幸的是,它似乎对我不起作用。我认为这是由于错误“未定义cordova”,我知道这是因为浏览器没有cordova.js 文件,但它在模拟器中也不起作用。还在 createFile 函数的末尾添加了一个“”。以上是关于Cordova:如何使用 vanilla JS 保存文本文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Vanilla JavaScript (JS) 中导入/导出类
如何通过 Protractor 使用 vanilla JS 从 API 获取 json
如何使用特定于浏览器的 vanilla JS 库对依赖项做出反应