由于我在my / assets文件夹之外提供特定.SWF文件的原因。 这个想法是这样的:
def get_swf
send_file("#{Rails.root}/app/assets_protected/game.swf", :disposition => "inline")
end
这允许我在此方法中执行某些检查(用户登录等),而不是将此.SWF作为my / assets文件夹的一部分。
我在页面中使用swfobject.js加载此方法,但直接调用此URL只会将.SWF文件作为下载提供。
我不高兴文件被下载,也许这可以解决。
答案 0 :(得分:3)
我认为这里有两个问题。第一个问题是你是否可以阻止直接下载某些内容,但仍然将其加载到浏览器中。
这根本不可能。如果他们要查看.swf,它已经在他们的计算机上了。它是浏览器缓存的一部分,因此您无法同时将其提供给用户并阻止他们直接获取。
第二个问题是保护此文件。我在这里看到了几个选项。
仅允许某些受信任的用户访问该文件。 (听起来你可能正在做这样的事情)
让人们可以正常访问您的.swf,但要提取您担心的机密功能,并将其置于服务器端的Web服务调用中。例如,如果您有一些基于某些变量计算用户得分的动作脚本,您将删除该功能,将其放在服务器端的Web服务中,并从您的动作脚本中调用它(我认为这是可能的,但我不是Flash开发人员。)
这只是一种缓解,但有一些工具可以混淆swf文件。这可能足以让您有信心让SWF进入野外。了解这不是防弹的,可以进行逆向工程。 Example SWF obsfucator
答案 1 :(得分:2)
您应该尝试使用send_data
代替send_file
来利用rails的数据(视频)流功能。