Ruby on rails Rails ActiveStorage音频内容范围

Ruby on rails Rails ActiveStorage音频内容范围,ruby-on-rails,audio,rails-activestorage,http-content-range,Ruby On Rails,Audio,Rails Activestorage,Http Content Range,它一开始只是简单地使用ActiveStorage,只需以mp3格式存储一些音频文件(操作简单),并在网站上显示: 我在Chrome和Firefox上进行了测试,它可以正常工作,我可以播放音频,但在Safari上测试时,我遇到了一个问题,Safari认为服务器支持内容范围,因此Safari认为这是一个实时流,html5元素只能播放一次 所以我一直在互联网上搜索如何解决这个问题,我看到的答案是: Web服务器不支持它,但我使用的是Apache2.4,从2.2开始,它默认支持内容范围 狩猎之旅是红

它一开始只是简单地使用ActiveStorage,只需以mp3格式存储一些音频文件(操作简单),并在网站上显示:

我在Chrome和Firefox上进行了测试,它可以正常工作,我可以播放音频,但在Safari上测试时,我遇到了一个问题,Safari认为服务器支持内容范围,因此Safari认为这是一个实时流,html5元素只能播放一次

所以我一直在互联网上搜索如何解决这个问题,我看到的答案是:

  • Web服务器不支持它,但我使用的是Apache2.4,从2.2开始,它默认支持内容范围
  • 狩猎之旅是红色的对我没有帮助
  • 您应该在Rails上实现它是的,这可能是一个解决方案,但我检查了ActiveStorage()的代码,但我必须更改它(我发现这个答案),这似乎很有帮助,但似乎应该更简单,不需要我更改ActiveStorage的实现
  • 最后一种可能是,我不理解所有东西是如何交织在一起的,答案可能很简单,也很容易实现,这就是为什么互联网上没有信息,因为这是显而易见的,但我无法真正理解
任何人都有关于如何使用ActiveStorage来存储和提供音频的指导,这些音频可以使用适用于Chrome、FireFox和Safari的html5音频标签来呈现


感谢您的帮助。

如果我们设置Rails发送文件路径,服务器似乎确实会处理请求。目前,Rails正在将文件作为原始数据发送(请参阅:For Rails5.2.0)。如果我们想让Rails将控制权交给服务器,我们应该使用
send_data
而不是使用
send_file
,这一点在Rails的主分支中已经得到了解决,请参见:(),因此这只是等待的问题。我们将遵循github for ActiveStorage的讨论:我们可以看到提交并没有解决这个问题。还在努力。如果有人有更多的想法,让我知道,如果我发现一些新的东西,我会在这里张贴,以帮助同舟共济的人。目前,一个建议的解决方案是使用:
file\u status,file\u headers,file\u body=Rack::file.new(nil).service(request,path)response.status=file\u status response.headers.merge!(文件\u标题)self.response\u body=文件\u body