Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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 如何从浏览器保存或修改文件_Javascript_Html_Xml - Fatal编程技术网

Javascript 如何从浏览器保存或修改文件

Javascript 如何从浏览器保存或修改文件,javascript,html,xml,Javascript,Html,Xml,好吧,我今天的问题有点模糊,但很多人似乎都在问这个问题。是否有任何方法可以从一个HTML页面中保存一个文件,而该页面不是严格的IE特定的?我试图编写一个HTML页面,打开XML文件,让您在页面中编辑文件并保存它。显然,作为一种常规做法,这是不好的,因为使用脚本编写文件会带来巨大的安全隐患,但必须有某种方法。我使用JavaScript处理大部分数据,但在对XML文件进行更改后,我希望能够看到这些更改反映在硬盘上保存的副本中。像这样的东西有什么选择 我不认为您可以这样做,但是,您可以使用php创建一

好吧,我今天的问题有点模糊,但很多人似乎都在问这个问题。是否有任何方法可以从一个HTML页面中保存一个文件,而该页面不是严格的IE特定的?我试图编写一个HTML页面,打开XML文件,让您在页面中编辑文件并保存它。显然,作为一种常规做法,这是不好的,因为使用脚本编写文件会带来巨大的安全隐患,但必须有某种方法。我使用JavaScript处理大部分数据,但在对XML文件进行更改后,我希望能够看到这些更改反映在硬盘上保存的副本中。像这样的东西有什么选择

我不认为您可以这样做,但是,您可以使用php创建一个包含用户指定内容的文件,并将其保存在您的服务器上。此时,您可以将链接返回给用户查看。如果您有一个后端数据库,它会工作得更好

就像我说的,这个选项实际上是在服务器上创建文件,而不是更改它们

有用链接:


我建议检查节点。我为Chrome写了一个扩展,它做了完全相同的事情。它从我的硬盘上打开一个文件,我可以编辑它,然后保存它。我只是使用nodejs和sockets作为浏览器和文件系统之间的桥梁。下面是一个演示该过程的视频: 可能因为您已经了解javascript,您将能够轻松编写自己的模块。

您可以尝试以下方法:

var dataXml = '<?xml version="1.0" encoding="ISO-8859-1"?><note><from>Myself</from><to>World</to><message>Hello world!</message></note>';    
var url = 'data:text/xml;charset=utf8,' + encodeURIComponent(dataXml);

window.open(url, '_blank');
window.focus(); 
var dataXml='myselfworldworldhello world!';
var url='数据:text/xml;charset=utf8,“+encodeURIComponent(dataXml);
打开(url,“U空白”);
window.focus();

演示:

只要您不关心旧机器,使用html5的JSAPI就很容易:

现场演示:


拯救

函数pop(文件){ var fr=new FileReader(); fr.onload=function(e){data.value=e.target.result;} fr.readAsText(file.files[0]); }
不,没有这种方法。使用javascript在客户端计算机上保存文件将是一个可怕的安全漏洞,感谢上帝,这是不可能的。当你提到IE时,我想你指的是一些ActiveX解决方案。你只能让浏览器为你提供下载,你不能选择文件的写入位置。基本概念在我前面的回答中,但您很可能希望从Blob生成一个,这是您要保存的数据。使用ajax将其发送到服务器,在那里存储一段时间,而客户端使用
window.location='/grabfile.php?id='+id
使用
标题从grabfile.php提供文件('Content-disposition:attachment;filename='。$filename)然后浏览器将下载==保存文件。太棒了。现在很有可能,已经有一年了。。。使用输入标记或dnd从用户计算机打开文件。使用下载功能将修改后的数据保存回计算机。工作方式类似于下载(strMyFileData、“data.txt”、“text/plain”);明确地说,我不想在客户端保存文件,我想修改服务器端承载的文件
<input type=file id=file onchange=pop(this)>
<button onclick="download(data.value, file.files[0].name, file.files[0].type )">save</button>
<br />

<textarea cols=110 rows=20 id=data ></textarea>

<script src="http://danml.com/js/download.js" ></script>
<script>
function pop(file){
  var fr=new FileReader();
  fr.onload=function(e){data.value=e.target.result;}
  fr.readAsText(file.files[0]);
}

</script>