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

时间:2016-03-05 16:31:33

标签: html linux browser local

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

事情是“开始看他们”的一部分。如果我以直截了当的方式(<a href="path/to/movie.mkv">watch it</a>),它会询问保存文件的位置。

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

我在考虑使用一些非标准扩展创建虚拟文件,并将它们与自定义MIME类型和.desktop文件相关联。 .desktop文件应该启动相应的电影。但是我很少或没有经验,它仍然需要先下载它,不是吗?

首选浏览器为chromefirefox。目标操作系统为linux

UPD this answer判断我想要什么似乎是不可能的。我上面提到的可能有一个解决方法,使浏览器下载一个“快捷方式”(包含电影的路径),而不是整个电影,并将此自定义文件类型与.desktop文件相关联,这将启动相应的电影。此外,使浏览器自动保存下载和自动打开此类型的文件。但不确定我是否会这样做。

2 个答案:

答案 0 :(得分:2)

毕竟,我最终做到了“自定义mime类型”的方式。首先,我没有制作chromiummkv个文件。其次,我认为浏览器不适合观看电影(尽管你可以)。

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

chromium/Settings/Show advanced settings... link

滚动至Downloads部分:

chromium/Settings/Downloads section

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

path/to/my/movie.mkv

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

chromium/Always open files of this type menu item

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

首先,您需要安装mimetype。如果未安装,xdg-open使用file来确定mime类型。我怀疑file可以配置为返回自定义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 "$1")"

我正在运行Arch Linux,因此您的里程可能会有所不同。据推测,useful link至少为xfce

答案 1 :(得分:0)

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

<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>