【问题标题】:How to open local file from browser?如何从浏览器打开本地文件?
【发布时间】:2022-03-03 15:14:38
【问题描述】:

我在尝试打开本地文件时使用以下内容:

<a href="file:///Users/username/Dropbox/Documents/a/some document.numbers">some document</a>

当我在浏览器中单击上述内容时,它会打开 Finder 到该文件夹​​。但不打开文件。我是否应该做其他事情才能在 Numbers 中打开文件?

【问题讨论】:

    标签: html macos file


    【解决方案1】:

    您无法在客户端上打开本地文件。这将是一个巨大的安全风险。

    您可以链接到服务器上的文件(就像您做的那样),或者您可以使用&lt;input type="file"&gt;客户端请求文件

    【讨论】:

    • 澄清一下:“像你一样”我的意思是你目前使用&lt;a&gt;-标签链接的方式。客户将安装一个浏览器扩展程序,允许打开其他程序(如 Skype 的程序)
    • 这是我的本地计算机,因此无需担心安全问题。 &lt;input type="file"&gt;如何打开文件?似乎比单击链接要多得多。
    • 不,它是用来上传文件的,如果你真的只有一个本地文件(不是服务器),那么就可以访问这些文件,但不知道 .number 文件。其他 cmets 很好地解释了这一点
    【解决方案2】:

    您只能在浏览器中打开某些类型的文件,例如htmlcssjsmp4,否则浏览器会想要下载它。还要记住,浏览器会用%20 替换空格。我建议右键单击该文件并使用 chrome 打开它,然后复制该链接并使用它。

    您可以打开本地文件,只要该文件位于试图打开另一个本地文件的文件上。

    【讨论】:

    • 这比仅提供纯文本链接更容易吗?
    • 因为问题很可能在于 url 链接不正确。但是它可能是文件的类型。将文件更改为 .txt 可能会解决此问题。
    • 不,根本不允许。 html代码没有问题。不允许您从网站打开其他程序。
    • 如果这不是一个网站,而只是个人电脑上的一个文件,那么您可以从用户电脑上的任何目录打开任何文件。如果他想建立一个网站,那么你当然是对的,除非他做一个允许这样做的扩展,否则他不能。
    • 看来你是对的。如果您需要一个程序或类似的程序,通常您会设置一个本地服务器,它再次需要在服务器文件中。但如果你不这样做,你确实是对的,对不起
    【解决方案3】:

    您的问题可能是文档名称中的空格。试试这个:

    &lt;a href="file:///Users/username/Dropbox/Documents/a/some%20document.numbers"&gt;some document&lt;/a&gt;

    %20 将被您的浏览器读取为空格。

    更新
    另一个答案指出了我错过的一些东西。 .numbers 扩展将无法直接由您的浏览器打开。此外,另一个答案描述了这可能造成的安全风险。

    【讨论】:

      【解决方案4】:

      HTML 5 中的文件 API 现在允许您直接从 JS 处理本地文件(为了安全起见,在选择文件的基本用户交互之后)。

      来自the Mozilla File API docs

      File 接口提供有关文件的信息并允许网页中的 JavaScript 访问其内容。
      File 对象通常从作为用户选择文件的结果返回的FileList 对象中检索使用 &lt;input&gt; 元素、拖放操作的 DataTransfer 对象或 HTMLCanvasElement 上的 mozGetAsFile() API。"

      有关更多信息和代码示例,请参阅the sample demo linked from the same article

      【讨论】:

        【解决方案5】:

        这可能不是您想要做的,但有人可能会觉得它有帮助:

        如果您想共享网络文件的链接(例如通过电子邮件),您可以这样做:

        file:///Volumes/SomeNetworkFolder/Path/To/file.html

        然而,这也需要收件人连接到 finder 中的网络文件夹 --- 在菜单栏中,

        开始 > 连接到服务器

        输入服务器地址(例如 file.yourdomain.com - “SomeNetworkFolder”将在此目录中)并单击连接。现在上面的链接应该可以工作了。

        【讨论】:

          【解决方案6】:

          您可以使用 http 服务器在浏览器中公开整个文件系统。

          caddy2 server

          caddy file-server --listen :2022 --browse --root /
          
          • 在 http://localhost:2022/ 为根文件系统提供服务

          python3 built-in server

          python3 -m http.server
          
          • 在 http://localhost:8000/ 上提供当前目录

          python2 built-in server

          python3 -m SimpleHTTPServer
          
          • 在 http://localhost:8000/ 上提供当前目录

          这个

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-04-27
            • 1970-01-01
            • 2014-10-14
            • 2016-04-20
            • 1970-01-01
            • 2013-08-28
            • 2011-11-09
            • 1970-01-01
            相关资源
            最近更新 更多