Javascript 和 Cordova/Phonegap FileWriter 在写入简单文本文件时给出 Invalid_Modification_Error
Javascript and Cordova/Phonegap FileWriter gives Invalid_Modification_Error on a simple text file write
我正在使用 Cordova File 和 FileTransfer 插件。我在 config.xml
中设置了以下权限
<feature name="File">
<param name="ios-package" value="CDVFile" />
</feature>
<feature name="FileTransfer">
<param name="ios-package" value="CDVFileTransfer" />
</feature>
我正在尝试使用以下代码编写一个纯文本文件:
this.writeFile = function (filename, content, type, callback) {
window.resolveLocalFileSystemURL(cordova.file.applicationDirectory, function(dir) {
dir.getFile(filename, { create: true }, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
console.log('WRITE SUCCESS');
callback(null, e);
};
fileWriter.onerror = function(e) {
console.log('WRITE ERROR is');
console.log(e);
callback(e);
};
var blob = new Blob([content], {type: type});
fileWriter.write(blob);
}, callback);
}, callback);
}, callback);
};
当我执行下面的行时:
this.writeFile('stuff.txt', 'Eggs and Burgers', 'text/plain', callback);
我在用代码 9 转换为 INVALID_MODIFICATION_ERROR 写入文件时出错。这是什么意思?与权限有关吗?如何在 Xcode 或 Cordova 中为我的应用授予文件系统权限?
另一个问题是我的回调函数被调用了两次!一次成功,一次错误。现在明白writeend并不一定代表操作成功了,但是遇到这种情况怎么处理呢?
请注意,此问题仅发生在实际的 iOS 设备上。在 iOS 模拟器中,它在文件系统上运行和写入都非常好。解决完怎么写文本文件,我就接着写png/mp3/wav个文件
感谢所有帮助。谢谢。
事实证明,上面的代码没有任何问题,只是 Apple 禁止在安装包后写入应用包。捆绑包已签名,之后不允许修改。
要能够写入数据,只需更改
cordova.file.applicationDirectory
至
cordova.file.dataDirectory
并根据需要将以下内容添加到您的 config.xml 中:
<preference name="iosPersistentFileLocation" value="Library" />
您的数据将存储在 iOS 中的 Library/NoCloud 目录中。
我正在使用 Cordova File 和 FileTransfer 插件。我在 config.xml
中设置了以下权限<feature name="File">
<param name="ios-package" value="CDVFile" />
</feature>
<feature name="FileTransfer">
<param name="ios-package" value="CDVFileTransfer" />
</feature>
我正在尝试使用以下代码编写一个纯文本文件:
this.writeFile = function (filename, content, type, callback) {
window.resolveLocalFileSystemURL(cordova.file.applicationDirectory, function(dir) {
dir.getFile(filename, { create: true }, function(fileEntry) {
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
console.log('WRITE SUCCESS');
callback(null, e);
};
fileWriter.onerror = function(e) {
console.log('WRITE ERROR is');
console.log(e);
callback(e);
};
var blob = new Blob([content], {type: type});
fileWriter.write(blob);
}, callback);
}, callback);
}, callback);
};
当我执行下面的行时:
this.writeFile('stuff.txt', 'Eggs and Burgers', 'text/plain', callback);
我在用代码 9 转换为 INVALID_MODIFICATION_ERROR 写入文件时出错。这是什么意思?与权限有关吗?如何在 Xcode 或 Cordova 中为我的应用授予文件系统权限?
另一个问题是我的回调函数被调用了两次!一次成功,一次错误。现在明白writeend并不一定代表操作成功了,但是遇到这种情况怎么处理呢?
请注意,此问题仅发生在实际的 iOS 设备上。在 iOS 模拟器中,它在文件系统上运行和写入都非常好。解决完怎么写文本文件,我就接着写png/mp3/wav个文件
感谢所有帮助。谢谢。
事实证明,上面的代码没有任何问题,只是 Apple 禁止在安装包后写入应用包。捆绑包已签名,之后不允许修改。
要能够写入数据,只需更改
cordova.file.applicationDirectory
至
cordova.file.dataDirectory
并根据需要将以下内容添加到您的 config.xml 中:
<preference name="iosPersistentFileLocation" value="Library" />
您的数据将存储在 iOS 中的 Library/NoCloud 目录中。