如何让浏览器打开本地文件,而不是下载它?
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
文件应该启动相应的电影。但我对它几乎没有经验,它仍然必须先下载它,不是吗?
首选浏览器是 chrome
或 firefox
。目标 OS 是 linux
.
UPD 从this 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
.
我正在尝试创建一个 html 页面,用户可以在其中查看电影列表并开始观看。该页面应该在一台特定机器上本地工作(file
协议,或 http://localhost
如果需要)。
事情与 "start watching them" 部分有关。如果我直接这样做 (<a href="path/to/movie.mkv">watch it</a>
),它会询问文件的保存位置。
我希望它启动 vlc
或打开相应目录的文件管理器。
我正在考虑创建具有一些非标准扩展名的虚拟文件,将它们与自定义 MIME 类型和 .desktop
文件相关联。 .desktop
文件应该启动相应的电影。但我对它几乎没有经验,它仍然必须先下载它,不是吗?
首选浏览器是 chrome
或 firefox
。目标 OS 是 linux
.
UPD 从this 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
.