我知道这个问题经常被问到,但是区别是我已禁用网络安全。我正在创建一个永远不会在任何地方托管的webapp,以访问用户运行,chrome --disable-web-security --user-data-dir [webappdirectoryhere] 我了解这是多么的非常规,但这仅适用于小型项目。
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实例以写入该文件。
getFile
getDirectory
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函数中的步骤即可。检查文档以了解其他过程,例如读取文件。