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