当前位置: 首页 > 面试题库 >

JavaScript / Ajax写入文件

农飞尘
2023-03-14
问题内容

我知道这个问题经常被问到,但是区别是我已禁用网络安全。我正在创建一个永远不会在任何地方托管的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函数中的步骤即可。检查文档以了解其他过程,例如读取文件。



 类似资料:
  • 问题内容: 我一直在尝试找到一种使用Node.js时写入文件的方法,但是没有成功。我怎样才能做到这一点? 问题答案: 文件系统API中有很多详细信息。最常见的方法是:

  • 问题内容: 我有一个脚本(使用PhantomJS),用于测试加载网页需要多长时间。我要弄清楚的是如何写将页面加载到.csv文件所花费的时间结果。然后,如果我要重新运行测试,以将另一个结果添加到.csv文件中。 码: 问题答案: 您可以将fs模块与附加模式下的方法一起使用。 其中,文件路径是字符串,是包含CSV行的字符串。 就像是:

  • 问题内容: 我在javascript中有一个JSON对象。我只想将JSON对象写入文本文件。到目前为止,从我遇到的情况来看,由于客户端的安全问题,无法这样做。有解决方法吗?如果最初放置一些虚拟值,是否可以修改已经存在的文件? 谢谢 问题答案: 您可以做的一件事就是将JSON设置为即时下载。 工作演示:http : //jsfiddle.net/sLq3F/ 除此之外,由于安全原因,您无法在客户端的

  • 我现在是将方法A定义在被写入的文件里,然后 {a:'${A}'},在写入之前将'${}',给删了;但有没有简洁一点的方法呢? process 如何编写?

  • 问题内容: 如何将一小段文字写入文件?我已经使用Google搜索了3-4多个小时,但无法找到具体方法。 有很多论据,我不知道该如何使用。 当您只想在文件中写一个名字和几个数字时,最容易使用的功能是什么? 编辑:添加了一段我的代码。 问题答案:

  • Go将数据写入文件的方法和上面介绍过的读取文件的方法很类似。 package main import ( "bufio" "fmt" "io/ioutil" "os" ) func check(e error) { if e != nil { panic(e) } } func main() { // 首先看一下如何将一个字符