【问题标题】:How to read contents of a file using javascript?如何使用 javascript 读取文件的内容?
【发布时间】:2014-02-02 17:35:49
【问题描述】:

我有一个input type="file" 按钮。选择文件后,我必须使用 javascript 读取文件的内容。是否可以使用 javascript 或 ajax 读取/获取所选文件的内容?

【问题讨论】:

    标签: javascript ajax


    【解决方案1】:

    在某种程度上,你们都错了。有可能的。使用新的文件 API,您可以在将文件提交到服务器之前读取文件。但它并非在所有浏览器中都可用。

    检查这个例子。例如,尝试打开一个文本文件。

    http://development.zeta-two.com/stable/file-api/file.html

    编辑:即使问题指出“上传的文件”,我也将其解释为“要上传的文件”。否则根本没有意义。

    【讨论】:

    • +1 - 如果启用服务器端,那么这是一个简单的解决方案,但文件 API 确实解决了问题,尽管可用性仍然是一个问题。
    • +1 - 在这里查看另一个教程:html5rocks.com/en/tutorials/file/dndfiles
    【解决方案2】:

    使用 AJAX 可以读取上传的文件,但使用纯 javascript 则不可能,因为 javascript 在客户端而不是服务器端工作。

    如果你打算使用 jquery 而不是 Ajax 调用可能是这样的

    $.ajax({
      url: "test.html",
      context: document.body,
      success: function(){
        $(this).addClass("done");
      }
    });
    

    【讨论】:

    • 我正在使用原型 ajax。是否可以在发送/发布到服务器之前获取所选(输入类型 =“文件”)文件的内容?
    • 我应该使用 javascript 解密函数来解密文件中的内容。所以我需要所选文件中的内容。
    【解决方案3】:

    客户端读取文件很困难:

    How to read and write into file using JavaScript

    Read a local file

    Local file access with javascript

    除非您尝试使用本地 javascript:

    Access Local Files with Local Javascript

    或服务器端javascript:

    http://en.wikipedia.org/wiki/Server-side_JavaScript

    您也可以强制用户安装 ActiveX 对象:

    http://4umi.com/web/javascript/fileread.php

    【讨论】:

      【解决方案4】:

      你不能直接使用 javascript 来做到这一点。您可以将文件发布到服务器,然后使用 ajax 检索内容。

      【讨论】:

        【解决方案5】:

        Javascript 设计为无法访问运行它的计算机。这是为了让流氓 javascript 无法读取用户的硬盘。 不过,您可以考虑使用 iframe。

        【讨论】:

          【解决方案6】:

          在 java 脚本中是不可能的。见Local file access with javascript

          我同意上面的 DoXicK。您可以先将文件发布到服务器上,然后您可以使用 Ajax 读取它。

          【讨论】:

            【解决方案7】:

            这并非完全不可能

            浏览器通常在沙盒环境中运行 Javascript(JavaScript 引擎)。

            因此您可以在受信任的环境中使用 Windows Scripting Host 或 Internet Explorer,并使用FileSystemObject

            或使用

            或将文件上传到您的服务器并使用 XMLHttpRequest 对象。(换句话说 - Ajax)

            【讨论】:

              【解决方案8】:

              对于 IE,使用 FileSystemObject(在所有 Windows 系统上都可以找到)。

              对于火狐:

              var file = Components.classes["@mozilla.org/file/local;1"].
                     createInstance(Components.interfaces.nsILocalFile);
              file.initWithPath("/home");
              

              https://developer.mozilla.org/en/Code_snippets/File_I%2F%2FO

              要查看这些方法和其他方法的使用情况,请查看TiddlyWiki app,了解它在所有主要浏览器中的表现。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-12-24
                • 2023-03-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多