如何让浏览器打开本地文件,而不是下载它?

How to make a browser open local file, not download it?

我正在尝试创建一个 html 页面,用户可以在其中查看电影列表并开始观看。该页面应该在一台特定机器上本地工作(file 协议,或 http://localhost 如果需要)。

事情与 "start watching them" 部分有关。如果我直接这样做 (<a href="path/to/movie.mkv">watch it</a>),它会询问文件的保存位置。

我希望它启动 vlc 或打开相应目录的文件管理器。

我正在考虑创建具有一些非标准扩展名的虚拟文件,将它们与自定义 MIME 类型和 .desktop 文件相关联。 .desktop 文件应该启动相应的电影。但我对它几乎没有经验,它仍然必须先下载它,不是吗?

首选浏览器是 chromefirefox。目标 OS 是 linux.

UPDthis answer来看我想要的似乎是不可能的。可能有一个我在上面提到的解决方法,让浏览器下载 "shortcut"(包含电影的路径),而不是整个电影,并将此自定义文件类型与 .desktop 文件相关联,这将开始对应的电影。此外,使浏览器自动保存下载并自动打开此类文件。但不确定我是否要走这条路。

您必须在网页中嵌入视频:

<video width="x" height="y" controls>
  <source src="movie.mp4" type="video/mp4">
Your browser does not support the video tag.<!--error message for outdated browsers-->
</video>

毕竟,我最终还是 "custom mime type" 这样做了。首先,我未能使 chromium 播放 mkv 文件。其次,我认为浏览器不是用来看电影的(虽然你可以)。

所以,我要在这里使用 chromium。转到 Settings。滚动到页面底部。点击Show advanced settings...:

滚动到 Downloads 部分:

(可选) 取消选中 Ask where to save each file before downloading。创建文件 my-movie.movie-shortcut,包含:

path/to/my/movie.mkv

创建并打开包含此文件的 link 的页面。 (您很可能必须使用 Web 服务器提供该页面,否则 chromium 会在确定文件是 text/plain mime 类型后自行打开文件。)单击 link,下载文件,然后 (可选) 检查 Always open files of this type 菜单项:

现在,chromium 很可能运行 xdg-open path/to/file 来打开文件。至少,如果你让 xdg-open 工作,它也会在 chromium 中工作。

首先,您需要安装mimetype。如果未安装,xdg-open 使用 file 确定 mime 类型。我怀疑 file 可以配置为 return 自定义 MIME 类型。

然后在/usr/share/mime/globs中添加一行:

text/x-movie-shortcut:*.movie-shortcut

请注意,/usr/share/mime/globs 是自动生成的,因此请确保在需要时以正确的方式生成。

然后在~/.config/mimeapps.list[Default Applications]部分添加一行:

text/x-movie-shortcut=run-movie.desktop

并创建 ~/.local/share/applications/run-movie.desktop:

[Desktop Entry]
Version=1.0
Name=Run Movie
GenericName=Run Movie
Comment=Run Movie
Exec=/home/yuri/bin/run-movie.sh
Icon=vlc
Terminal=false
Type=Application
MimeType=text/x-movie-shortcut

并创建~/bin/run-movie.sh(您可以尝试将命令放入.desktop文件):

#!/usr/bin/env bash
set -eu
/usr/bin/vlc --started-from-file "$(cat "")"

我是 运行 Arch Linux,所以您的情况可能会有所不同。这里据说 useful link 至少 xfce.