【发布时间】:2022-03-03 15:14:38
【问题描述】:
我在尝试打开本地文件时使用以下内容:
<a href="file:///Users/username/Dropbox/Documents/a/some document.numbers">some document</a>
当我在浏览器中单击上述内容时,它会打开 Finder 到该文件夹。但不打开文件。我是否应该做其他事情才能在 Numbers 中打开文件?
【问题讨论】:
我在尝试打开本地文件时使用以下内容:
<a href="file:///Users/username/Dropbox/Documents/a/some document.numbers">some document</a>
当我在浏览器中单击上述内容时,它会打开 Finder 到该文件夹。但不打开文件。我是否应该做其他事情才能在 Numbers 中打开文件?
【问题讨论】:
您无法在客户端上打开本地文件。这将是一个巨大的安全风险。
您可以链接到服务器上的文件(就像您做的那样),或者您可以使用<input type="file">向客户端请求文件
【讨论】:
<a>-标签链接的方式。客户将安装一个浏览器扩展程序,允许打开其他程序(如 Skype 的程序)
<input type="file">如何打开文件?似乎比单击链接要多得多。
您只能在浏览器中打开某些类型的文件,例如htmlcssjs 和mp4,否则浏览器会想要下载它。还要记住,浏览器会用%20 替换空格。我建议右键单击该文件并使用 chrome 打开它,然后复制该链接并使用它。
您可以打开本地文件,只要该文件位于试图打开另一个本地文件的文件上。
【讨论】:
您的问题可能是文档名称中的空格。试试这个:
<a href="file:///Users/username/Dropbox/Documents/a/some%20document.numbers">some document</a>
%20 将被您的浏览器读取为空格。
更新
另一个答案指出了我错过的一些东西。 .numbers 扩展将无法直接由您的浏览器打开。此外,另一个答案描述了这可能造成的安全风险。
【讨论】:
HTML 5 中的文件 API 现在允许您直接从 JS 处理本地文件(为了安全起见,在选择文件的基本用户交互之后)。
“
File接口提供有关文件的信息并允许网页中的 JavaScript 访问其内容。File对象通常从作为用户选择文件的结果返回的FileList对象中检索使用<input>元素、拖放操作的DataTransfer对象或HTMLCanvasElement上的mozGetAsFile()API。"
有关更多信息和代码示例,请参阅the sample demo linked from the same article。
【讨论】:
这可能不是您想要做的,但有人可能会觉得它有帮助:
如果您想共享网络文件的链接(例如通过电子邮件),您可以这样做:
file:///Volumes/SomeNetworkFolder/Path/To/file.html
然而,这也需要收件人连接到 finder 中的网络文件夹 --- 在菜单栏中,
开始 > 连接到服务器
输入服务器地址(例如 file.yourdomain.com - “SomeNetworkFolder”将在此目录中)并单击连接。现在上面的链接应该可以工作了。
【讨论】:
您可以使用 http 服务器在浏览器中公开整个文件系统。
caddy file-server --listen :2022 --browse --root /
python3 -m http.server
python3 -m SimpleHTTPServer
这个
【讨论】: