为什么Firefox不能运行本地的.swf文件?

我的目标是通过Firefox而不是独立播放器来运行.swf文件。
当尝试在Firefox 29.0(目前在14.04上)上运行本地的.swf文件时,即使浏览器已安装了Flash插件,浏览器仍会打开“打开方式/保存文件”提示窗口。右键单击文件并选择“使用... > Firefox”只会使浏览器打开一个新标签,然后再次出现“打开方式/保存文件”的提示。通过该提示窗口选择Firefox仍然只会使Firefox在新标签上再次打开提示。
然而,当在线访问.swf文件时,它们可以正常运行,甚至Firefox还会在地址栏中显示类似乐高的插件指示器,表示“Adobe Flash”已启用于我正在访问.swf文件的地址。
在Firefox的首选项的应用程序选项卡中,SWF文件当前设置为“使用Shockwave Flash(在Firefox中)”,所以我不明白为什么它对于本地文件的情况不能按照其所说的去执行。
更新: 显然,Firefox在其首选项的应用程序选项卡中针对不同的MIME类型有单独的“Shockwave Flash文件”条目。找到了一个解决方法,我在下面输入了。

很棒的问题!我真的很喜欢你的表述方式。它易于在搜索结果中找到,并通过提及可能性以多种不同的方式描述了问题。 - Nathan Basanese
2个回答

找到了一个解决方法这里,它基于一个Arch论坛的帖子这里。据我所了解,这只是Firefox不正确支持某种MIME类型的问题。
以root身份编辑/usr/share/mime/packages/freedesktop.org.xml文件,并替换以下内容:
<mime-type type="application/vnd.adobe.flash.movie">

使用:

<mime-type type="application/x-shockwave-flash">

然后运行:
sudo update-mime-database /usr/share/mime

现在本地的.swf文件已经正常工作了。

已测试,适用于我的14.10机器和Firefox 38.0。但是,在执行“sudo update-mime-database /usr/share/mime”命令时,我遇到了一些奇怪的错误。➜ ~ sudo vi /usr/share/mime/packages/freedesktop.org.xml [nathan的密码]: ➜ sudo update-mime-database /usr/share/mime 类型“all/all”中未知的媒体类型 类型“all/allfiles”中未知的媒体类型 类型“uri/mms”中未知的媒体类型 类型“uri/mmst”中未知的媒体类型 类型“uri/mmsu”中未知的媒体类型 类型“uri/pnm”中未知的媒体类型 类型“uri/rtspt”中未知的媒体类型 类型“uri/rtspu”中未知的媒体类型 - Nathan Basanese
2这对我来说看起来像是一个肮脏的黑客攻击(与使用配置文件和主目录的良好和有效答案相比)。 - Nobody
2另一个答案更好。 - That Brazilian Guy

另一个选项是在主目录中创建~/.mime.types文件,并填入以下内容:
application/x-shockwave-flash       swf swfl

这样在系统升级时就不会被覆盖。

如果你想的话,可以复制、粘贴并运行这个命令来完成此操作:

echo 'application/x-shockwave-flash       swf swfl' >> .mime.types

无需进一步操作,甚至不需要重新启动浏览器。

1你的意思是在主目录中创建一个名为.mime.types的空文档,然后将你提到的文本放入其中吗?之后我们要使用什么update-mime-database命令? - Ads20000
1是的,一个普通的文本文件。使用这种解决方法时不需要运行update-mime-database命令,只需将此文件放在主目录中即可。 - Aleh
6更简单、更方便,而且它还能正常运行! - FairMiles
1这个不需要使用sudo超级用户权限,对吧? - Nathan Basanese
3是的,它确实不行。 - Aleh
3这绝对是最好的方法,无需获取root权限,非常简单,最重要的是它就是有效的! - TuxForLife
圣**,这个立刻就起作用了! - ether_joe
更简单的方式是:echo 'application/x-shockwave-flash swf swfl' >> ~/.mime.types - l0b0
2在执行此操作后,由于FF现在会阻止Flash,您还需要在附加组件页面上取消选中Shockwave插件首选项中的安全框。 - sinekonata