Javascript 如何在phonegap上用android创建或写入文件?

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

我正在使用下面的代码在android上使用PhoneGap编写一个文件,我认为这一行
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