Javascript 如何在phonegap上用android创建或写入文件?
我正在使用下面的代码在android上使用PhoneGap编写一个文件,我认为这一行Javascript 如何在phonegap上用android创建或写入文件?,javascript,cordova,phonegap,Javascript,Cordova,Phonegap,我正在使用下面的代码在android上使用PhoneGap编写一个文件,我认为这一行window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fs){给出了错误,找不到确切的错误,因为我无法在android上调试。 我发现PhoneGap文档令人困惑 function download_file(cur_filename) { alert(5); window.requestFileSystem(LocalFil
window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fs){
给出了错误,找不到确切的错误,因为我无法在android上调试。
我发现PhoneGap文档令人困惑
function download_file(cur_filename)
{
alert(5);
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {
alert(2);
console.log('file system open: ' + fs.name);
alert(3);
fs.root.getFile(cur_filename, { create: true, exclusive: false }, function (fileEntry) {
alert("fileEntry is file?" + fileEntry.isFile.toString());
// fileEntry.name == 'someFile.txt'
fileEntry.name==cur_filename;
// fileEntry.fullPath == '/someFile.txt'
writeFile(fileEntry, null);
}, onErrorCreateFile);
}, onErrorLoadFs);
}
function writeFile(fileEntry, dataObj) {
aler(4);
// Create a FileWriter object for our FileEntry (log.txt).
fileEntry.createWriter(function (fileWriter) {
fileWriter.onwriteend = function() {
console.log("Successful file write...");
readFile(fileEntry);
};
fileWriter.onerror = function (e) {
console.log("Failed file write: " + e.toString());
};
// If data object is not passed in,
// create a new Blob instead.
if (!dataObj) {
dataObj = new Blob(['some file data'], { type: 'text/plain' });
}
fileWriter.write(dataObj);
});
}
首先,您可以直接下载文件,而不必创建和编写新文件
cordova plugin add cordova-plugin-file
cordova plugin add cordova-plugin-file-transfer
现在,如果您在应用程序启动时访问插件,您需要将以下逻辑包含在deviceready
事件中。文件传输
附带下载文件所需的download()
。请在下面查找示例代码
document.addEventListener("deviceready", startDownload, false);
function startDownload() {
var fileTransfer = new FileTransfer();
// replace uri with -> http://192.168.43.54/text.csv
var uri = encodeURI("https://file-examples.com/wp-content/uploads/2017/04/file_example_MP4_1920_18MG.mp4");
fileTransfer.download(
uri,
cordova.file.dataDirectory + 'videos/big_buck_bunny_720p_1mb.mp4',
function(entry) {
console.log("download complete: ", entry);
},
function(error) {
console.log("download error source " + error.source);
console.log("download error target " + error.target);
console.log("download error code" + error.code);
}
);
}
下载完成后,条目
对象将具有一个nativeURL
属性,该属性保存文件的本地URL
更多信息
如果您有错误,可以肯定,错误回调函数将包含有关错误的信息。还请共享在错误回调中收到的错误代码/消息。
Uncaught ReferenceError:LocalFileSystem未在ondeviceready上定义(:92:30)
您安装了文件插件吗?我还尝试了“deviceready”事件,因为我发现可能插件没有准备好,是的,我检查,文件和文件传输插件已经存在于PhoneGapbro中。如果我使用“deviceready”事件,则“startdownload”功能不会执行。正如我所说,如果您在应用程序之后调用此逻辑嗯,你需要直接调用startDownload()
。如果我在没有设备的情况下使用它,那么它给了我文件传输没有定义,你使用的是angular?还是纯JS?我在Phonegap中使用的是简单的javascript