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()得到一个文件的引用,创建它,如果它不存在,这同样适用于创建子目录刚刚替补getFilegetDirectory。然后使用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

回到顶部