JavaScript / Ajax写入文件
我知道这个问题经常被问到,但是区别是我已禁用网络安全。我正在创建一个永远不会在任何地方托管的webapp,以访问用户运行,chrome
--disable-web-security --user-data-dir [webappdirectoryhere]
我了解这是多么的非常规,但这仅适用于小型项目。
我正在使用此Ajax访问本地文件(除非您正在运行服务器,或者像我一样禁用Web安全,否则这在chrome中不起作用):
function loadDoc(){ $.ajax({url: "ajax_info.txt", success: function(result){
var variablesArray = result.split(" ");
}});
}
所以我的问题是-除了写以外,我还能做类似的事情吗?
编辑:所以我真正想要的是一个做该ajax逆函数的函数。并编写类似(variable1 +“” + variable2)的注:我要覆盖,而不是追加。
回答:
由于您说过您不打算在任何地方托管它,因此您可以将代码移至打包的应用程序中。从那里可以使用chrome.fileSystem
api。
使用choiceEntry()来询问用户他们希望应用程序能够读取/写入的目录。在回调中,检查返回的条目是否有效,然后将其存储以备后用。
var userDir = null;chrome.fileSystem.chooseEntry({type: 'openDirectory'}, function(theEntry) {
//do sanity check(s) and store it
if(!theEntry.isDirectory) {
//report error
return;
}
userDir = theEntry;
});
一旦你有一个目录条目参考比你可以使用的GetFile()得到一个文件的引用,创建它,如果它不存在,这同样适用于创建子目录刚刚替补getFile
用getDirectory
。然后使用createWriter()获取FileWriter实例以写入该文件。
function saveData(filename,data){ if(!userDir) {
//report error
return;
}
userDir.getFile(filename, {create: true}, function(fileEntry) {
if(!fileEntry || !fileEntry.isFile){
//report error
return;
}
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = function(e) {
//report success
};
fileWriter.onerror = function(e) {
//report error: e.toString()
};
//Create a Blob from the data and write it.
var blob = new Blob([data], {type: 'text/plain'});
fileWriter.write(blob);
});
});
}
//at some point after user has selected directory
saveData("log.txt","Some data");
检查各种文档以了解错误报告和其他必要性。
如果只想询问用户一次目录,请使用keepEntry()保存目录条目的ID。并使用restoreEntry()获取目录的引用。从那里开始,只需执行saveData函数中的步骤即可。检查文档以了解其他过程,例如读取文件。
以上是 JavaScript / Ajax写入文件 的全部内容, 来源链接: utcz.com/qa/417797.html