为什么我的 mp3/ogg 在从 public 文件可搜索时从 Drupal 7 私有文件提供时不可搜索

Why is my mp3/ogg unseekable when served from Drupal 7 private files when it is seekable from public files

我自己编写了 JavaScript HTML5 音频播放器,当文件来自 Drupal 7 public 文件时效果很好,但当从 Drupal 7 私有文件提供时无法搜索.我已经登录了,为什么会出现这种情况?

我浪费了很多时间调试和重写我的代码,才发现是 public/vs private 导致了错误,我最终通过使用返回 no 的 seekable 对象解决了这个问题私人 src 的可搜索时间线,但在 public 上工作正常。

我搜索了这个问题,找到了许多不相关但相似的问题,但是 none 解释了这种行为。

Drupal 私有文件,与大多数经过身份验证的 PHP 下载脚本一样,通过 PHP 脚本路由文件请求。这些脚本(几乎)从不支持适当的 header,例如 Range header,需要执行恢复下载或请求文件部分等操作。

通常解决这些问题的最佳方法是不使用 PHP 脚本输出文件,因为它会给服务器增加不必要的负载。已验证下载的替代解决方案包括 X-Sendfile(如果可用或可以安装)、public 目录中的临时 randomly-named 符号 link 等

我使用 Resumable Download module and this patch

在 Drupal 7 上使用 Audiofield 和 jPlayer 的私有文件解决了我的问题