【问题标题】:How to make a browser open local file, not download it?如何让浏览器打开本地文件,而不是下载?
【发布时间】:2016-03-19 09:08:43
【问题描述】:

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

问题在于“开始观看他们”部分。如果我以直接的方式 (<a href="path/to/movie.mkv">watch it</a>) 执行此操作,它会询问将文件保存在哪里。

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

我正在考虑创建具有一些非标准扩展名的虚拟文件,将它们与自定义 MIME 类型和.desktop 文件相关联。 .desktop 文件应该开始相应的电影。但我对它的经验很少或根本没有,而且还是得先下载,不是吗?

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

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

【问题讨论】:

  • 在 Windows 上有一个带有一些编解码器包的 VLC 集成插件,因此视频立即开始流式传输。你应该看看Linux是否有类似的东西。
  • @mrmut 你能告诉我你说的是哪个插件吗?
  • How to launch browser to open local file 的可能副本以及在 SO 上找到的许多其他类似答案。
  • @Rob 您确定您的链接与我的问题有关吗?我不会写安卓应用程序。
  • @x-yuri 我点击了错误的链接但更改了它。尽管如此,您还是应该先搜索 SO 以找到您的答案。

标签: html linux browser local


【解决方案1】:

毕竟,我最终采用了“自定义 mime 类型”的方式。首先,我无法让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

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

那么,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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 我使用了“movie.mp4”,因为大多数浏览器都支持 mp4。您也可以使用“movie.mkv”,但某些浏览器可能不支持它。 Chrome 可以 - 我不确定其他浏览器。
    • 如果可能的话,我想避免这种情况。我认为,让它在独立的应用程序中运行可以提供更好的用户体验。
    • 那么你可能不得不使用 标签。 。但用户需要安装能够播放特定视频格式的播放器。
    猜你喜欢
    • 2012-06-14
    • 2011-10-18
    • 2016-12-14
    • 1970-01-01
    • 2011-11-08
    • 2013-05-15
    • 2013-04-13
    • 1970-01-01
    • 2019-03-08
    相关资源
    最近更新 更多