【问题标题】:Use JavaScript to write to text file?使用 JavaScript 写入文本文件?
【发布时间】:2012-11-06 08:20:38
【问题描述】:

我需要从我的一个博客页面中捕获搜索主题并将其写入文本文件以进行跟进。我已经能够捕获输入字符串,但是无法将其写入文本文件。我已阅读并尝试实施我发现的所有解决方案,但均未成功。我包含了一个非常简单的代码示例来将文本写入文件,但我无法让它工作。 Onblur 事件可以很好地访问 myFunction,所以这不是问题。我快疯了,因为其他人展示的样本如此简单。

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" >
    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
    <title>fs=Server CreateObject ("Scripting FileSystemObject")</title>
    <script type="text/javascript">
    function myFunction()
    {
        var fs = ActiveXObject("Scripting.FileSystemObject");
        var f = fs.OpenTextFile("d:\\test\\topics.txt", 8, true);
        f.WriteLine("This text will be added to the end of file");
        f.Close();
    }
    </script>
    </head>

    <body>
    <input name="Text1" type="text" size="55" onblur="myFunction()" />

    </body>

    </html>

【问题讨论】:

  • 您要将文件写入客户端还是服务器?使用 JavaScript 写入服务器不会有任何运气。
  • 您从哪里获得示例代码,以及您试图在什么浏览器上运行它? ActiveX 对象仅适用于 Internet Explorer...我不知道它们是否适用于较新版本的 Internet Explorer。
  • 另外,ActiveX 仅适用于 IE。我建议忘记它。
  • HTML5 只能让你将文本文件写入客户端而不是服务器。

标签: javascript activex activexobject


【解决方案1】:

如果您使用支持 data-uri 的现代浏览器,您可以使用 javascript 创建内容并通过 base64 编码强制下载并使其与 data-uri 兼容,然后只需将窗口位置指向它。

This answer demonstrates an HTML-only way to do it.

您也可以使用 flash 助手来处理这个问题。 For instance, Downloadify does this.

【讨论】:

    【解决方案2】:

    JavaScript cannot 从客户端读取/写入文件或将文件写入服务器(直接)。

    如果您想将文件写入服务器,请考虑使用将与您的 javascript 交互的服务器端脚本 - 并 example 了解如何使用一点 PHP 来做到这一点。

    就客户端文件交互而言,出于安全原因,这根本是不可能的(除非它被上传到脚本,在这种情况下它可以读取)。

    但是,您可以将数据存储在客户端上 - 我以前一直在使用 jStorage 并强烈推荐它。它可以跨浏览器工作(甚至在 IE 6 上)并且非常易于使用。

    【讨论】:

    • 感谢您的指导!我最初为 MyFuncion 提交的代码是否可以用于从 php 写入文件,或者我应该完全放弃 ActiveXObject 或 CreateObject 并使用:fopen()、fwrite() 和 fclose() 方法,用于将简单文本字符串的服务器端存储到 . txt 文件?
    • 我会完全放弃 ActiveX - 它过于依赖浏览器,会导致很多用户无法使用它。在将数据保存到服务器方面,我建议对将保存数据的 PHP 脚本使用 AJAX 请求。显然,您需要实施一种机制来限制可以节省的对象和数量。
    【解决方案3】:

    感谢会员提供的所有建议,我能够在服务器上执行写入和附加到文本文件。我使用 html 代码获取写入所需的数据,然后调用 .php 文件来写入文件。这是客户端与服务器端的问题,.php 使用 fopen、fwrite 和 fclose 解决了这个问题。

    【讨论】:

      【解决方案4】:

      从技术上讲,在 (.hta) 文件中使用 javascript 时,您可以使用 ActiveXObject Scripting.FileSystemObject 访问文件系统,有了它,您需要对文件系统执行任何您有权执行的操作.

      var fso=new ActiveXObject("Scripting.FileSystemObject");
      if(fso.FolderExists("C:\\Users\\")){
        alert("It exists, hello friend!");
      }eles{
        alert("Doesn't exist, who are you?");
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-22
        • 1970-01-01
        • 1970-01-01
        • 2018-10-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多