【问题标题】:Open a file using javascript, client-side使用 javascript,客户端打开文件
【发布时间】:2011-02-25 17:43:42
【问题描述】:

在我的应用程序中,我想打开客户端计算机上存在的文件。我创建了两个应用程序:桌面应用程序和 Web 应用程序。当用户安装桌面应用程序时,有一些文件被复制到其安装路径,我想通过 javascript 从我的 Web 应用程序打开这些文件。

【问题讨论】:

  • Javascript 在浏览器中被沙盒化,这是不可能的。
  • @Lazarus 几年前是不可能的,但现在一些浏览器支持File System Access API

标签: javascript asp.net


【解决方案1】:

出于安全原因,浏览器与主机隔离(沙盒)。

浏览器访问本地文件(除了沙箱内的文件,即cookies和缓存)的唯一方法是用户明确使用的HTML文件控件。

【讨论】:

    【解决方案2】:

    很遗憾,JavaScript 无法访问客户端的文件结构。您可以在 Web 应用程序中使用 Adob​​e AIR 之类的东西吗?

    http://www.adobe.com/devnet/air/flex/articles/exploring_file_capabilities.html

    【讨论】:

      【解决方案3】:

      浏览器是针对这种情况的沙盒。如果你能用 JavaScript 打开你自己的文件,谁来阻止我用 JavaScript 打开你的文件。

      解决此问题的常用方法是使用 ActiveX 组件并通过 JavaScript 与之交互。不过,这会限制您使用 IE。

      【讨论】:

        【解决方案4】:

        正如 Oded 出于安全原因在上面提到的那样,这是不可能的,话虽如此 如果您已经在客户端机器上安装了一个应用程序,那么您可以将参数传递给它并执行应用程序,在这种情况下,您可以将文件的 URI 传递给应用程序,以便它在他们的机器上打开,但我看不到它发生在浏览器中。

        【讨论】:

          【解决方案5】:

          这个呢?

          <script>
          var oRequest;
          
          if(document.all) {
             // Internet Explorer
             oRequest = new ActiveXObject("Microsoft.XMLHTTP")
          }
          else {
             // Mozilla
             oRequest = new XMLHttpRequest();
          }
          
          
          oRequest.open("GET", "file:///C:/myLocalFile.txt", false);
          oRequest.send(null);
          textToBeWritten = oRequest.responseText;
          
          document.write(textToBeWritten);
          </script>
          

          【讨论】:

          • 您是否从不在同一台机器上的位置尝试过此操作?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-30
          • 1970-01-01
          • 2023-03-19
          • 1970-01-01
          • 2015-07-16
          • 1970-01-01
          相关资源
          最近更新 更多