2009-02-24 84 views
56

有没有办法让jQuery从文件中获取信息?可能吗?怎么样?使用jQuery读取/写入文件

+2

你能不写答案的HTML中的一个字段? – 2009-02-24 18:16:08

+0

这不是真的了。但是您可以通过javascript获得的访问权限仅限于用户允许的内容。 – Kiwy 2013-12-16 09:02:32

+1

出于安全原因,沙箱可防止直接文件访问。您可以使用HTML5 File API来允许用户从文件对话框中选择文件。 – 2016-01-21 15:02:11

回答

68

不,JavaScript没有写入文件的权限,因为这至少可以说是一个巨大的安全风险。不过,如果你想获得/存储服务器端的信息,你当然可以对PHP/ASP/Python /等进行Ajax调用。脚本,然后可以在服务器中获取/存储数据。如果你的意思是在客户端机器上存储数据,那么单单使用JavaScript是不可能的。我怀疑Flash/Java可能能够,但我不确定。

如果您只是试图针对特定用户存储关于不可靠时间段的少量信息,我认为您需要Web Storage API或Cookie。不过,我不确定你的问题是你想完成什么。

+8

Cookie当然会起作用,但对于大多数支持HTML5本地存储的现代浏览器,我会走这条路。这是一个很好的指南,它是如何工作的:http://diveintohtml5.org/storage.html – 2010-11-10 16:43:33

5

饼干是你最好的选择。寻找jQuery cookie插件。

Cookie是为这种情况而设计的 - 您希望在客户端保留有关此客户端的一些信息。请注意,cookie会在每个Web请求中来回传递,因此您无法在其中存储大量数据。但只是一个简单的问题答案应该没问题。

8

您将需要通过Web编程语言(如PHP或ASP.net)处理您的文件访问。

要这样设置,您可以:

  • 创建处理文件读写的脚本。这应该对浏览器可见。

  • 向写入数据或读取数据的脚本发送jQuery ajax请求。您需要通过请求参数传递所有读/写信息。您可以在jQuery ajax文档中了解更多。

确保您清理存储的任何数据,因为这可能会带来安全风险。但是,这实际上只是标准的平面文件数据存储,并不一定非同寻常。

Paolo指出,没有办法通过jQuery或任何其他类型的javascript直接读/写文件。

14

HTML5和Google Gears都增加了本地存储功能,主要是通过嵌入式SQLite API。

2

如果你想在页面内没有一堆服务器端处理的情况下做到这一点,将文本值吹到隐藏字段(使用PHP)可能是一个可行的想法。然后你可以使用jQuery来处理隐藏的字段值。

无论漂浮你的船:)

10

这个Javascript功能提出了一个“另存为”对话框,谁运行通过他们的浏览器这个功能用户

的技术进行说明。用户按下确定,文件保存在服务器端。

这用于与所有浏览器一起使用,但现在只适用于IE。以下代码存在安全风险,如果JavaScript可以在服务器端保存数据,跨站点脚本黑客可以拥有您的服务器。 Firefox和Chrome已经堵住了漏洞,但IE尚未完成。

// content is the data (a string) you'll write to file. 
// filename is a string filename to write to on server side. 
// This function uses iFrame as a buffer, it fills it up with your content 
// and prompts the user to save it out. 
function save_content_to_file(content, filename){ 
    var dlg = false; 
    with(document){ 
    ir=createElement('iframe'); 
    ir.id='ifr'; 
    ir.location='about.blank'; 
    ir.style.display='none'; 
    body.appendChild(ir); 
     with(getElementById('ifr').contentWindow.document){ 
      open("text/plain", "replace"); 
      charset = "utf-8"; 
      write(content); 
      close(); 
      document.charset = "utf-8"; 
      dlg = execCommand('SaveAs', false, filename); 
     } 
     body.removeChild(ir); 
    } 
    return dlg; 
} 

调用这样的功能:

msg = "I am the president of tautology club."; 
save_content_to_file(msg, "C:\\test");