Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript/Ajax文件写入_Javascript_Jquery_Ajax_Google Chrome - Fatal编程技术网

JavaScript/Ajax文件写入

JavaScript/Ajax文件写入,javascript,jquery,ajax,google-chrome,Javascript,Jquery,Ajax,Google Chrome,我知道这个问题被问了很多,但这里的区别是我禁用了WEB安全。 我正在创建一个永远不会在任何地方托管的web应用程序,以访问用户运行的chrome--禁用web安全--用户数据目录[webappdirectoryhere] 我理解这是多么不正统,但这只是一个小项目 我使用这个ajax来访问本地文件(除非你有一个正在运行的服务器,或者你像我一样禁用了web安全性,否则在chrome中这是行不通的): 所以我的问题是,除了写作而不是阅读,我能做这样的事情吗 编辑: 所以我真正想要的是一个与ajax相反

我知道这个问题被问了很多,但这里的区别是我禁用了WEB安全。 我正在创建一个永远不会在任何地方托管的web应用程序,以访问用户运行的
chrome--禁用web安全--用户数据目录[webappdirectoryhere]
我理解这是多么不正统,但这只是一个小项目

我使用这个ajax来访问本地文件(除非你有一个正在运行的服务器,或者你像我一样禁用了web安全性,否则在chrome中这是行不通的):

所以我的问题是,除了写作而不是阅读,我能做这样的事情吗

编辑: 所以我真正想要的是一个与ajax相反的函数。写一些类似(variable1+“”+variable2)的东西
注意:我想覆盖,而不是附加。

既然你说你不打算把它放在任何地方,你可以把你的代码移动到一个打包的应用程序中。从那里您可以使用api

用于询问用户希望应用程序能够读/写到哪个目录。在回调函数中,检查返回的条目是否有效,然后将其存储以供以后使用

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;
});
一旦你有了一个目录项引用,你就可以用它来获取一个文件的引用,如果它还不存在的话就创建它,创建子目录也是一样的,只要用
getDirectory
替换
getFile
。然后使用get-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");
检查各种文件是否有错误报告和其他必要信息


如果只想向用户询问一次目录,请使用保存目录项的id。和用于获取目录的引用。从这里开始,只需执行saveData函数中的步骤即可。检查文档中的其他过程,如读取文件。

如果可能,我希望避免走这条路。当然,如果一切都是本地的,并且没有安全限制,我可以打开并写入这样的文件?@FatUglyProud您可以安装
php
并使用内置服务器。否则,没有;使用
,@guest271314我的
download
问题是文件不能重定向到除下载文件夹外的任何位置,对吗?我也不喜欢它不会覆盖已经存在的文件的方式?在这些问题上是否存在任何问题。我还需要
——对我正在做的其他事情禁用web安全性;)@您可以调整
设置
,将
下载位置
设置到适当的目录,检查
下载前询问每个文件的保存位置
。在
保存文件
对话框中调整文件名。如果没有这些设置,单击或其他用户操作可以将任何文件下载到用户文件系统,用户可能不知道下载发生了。@guest271314听起来很完美,但我迷路了。你是说Chrome的设置吗?如菜单中所示?评论不用于扩展讨论;这段对话已经结束。
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");