问题标签 [x-sendfile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1706 浏览

php - RewriteEngine 和 XSendFile 之间的冲突

我有以下 PHP 代码

当我直接调用脚本(http://localhost/site/get2.php?ftype=flv&filename=a56.flv)时,它工作正常,但只要使用(http://localhost/site/vsrc_a56.flv)调用它返回 404 页面和这个 apache 错误:

我的 .htaccess 文件如下所示:

0 投票
2 回答
4853 浏览

apache - 在 MAMP 上安装 apache 模块 X-Sendfile

如何安装 X-Sendfile apache 模块以便 MAMP 可以使用它?

我已按照这些说明安装 X-Sendfile,但它不起作用(似乎它只是为默认的 apache 安装安装了它)。我也尝试手动复制/usr/libexec/apache2/mod_xsendfile.so/Applications/MAMP/Library/modules/,但是在重新启动 Apache 时产生了以下错误:

Cannot load /Applications/MAMP/Library/modules/mod_xsendfile.so into server: cannot create object file image or add library

0 投票
1 回答
583 浏览

ruby-on-rails-3 - send_file 和文件权限

我的 rails 应用程序 (3.0.11) 访问文件系统以下载用户通过 SMB 放入文件系统的文件。不幸的是,OS X Lion Server 通过具有这些权限的 SMB 创建文件...

rwx --- --- 用户每个人

...但它确实通过 ACL 添加了适当的权限。运行 rails 的用户是“admin”,他可以通过 ACL 完全访问文件。现在问题...

send_file 说它无法访问该文件。如果我为“每个人”的文件添加 POSIX 权限,其中管理员是这样的一部分......

rwx rx --- 用户每个人

...然后它可以访问它,即使它应该只能通过 ACL 访问它。如果我把权限放回......

rwx --- --- 用户每个人

...然后尝试使用 File.open 而不是 send_file rails 可以读取文件。我什至可以使用打开的文件并将其提供给 send_data 并且可以,但是当我这样做时我不能使用 X-Sendfile。

那么 send_file 是怎么回事呢?

0 投票
1 回答
227 浏览

django - 在不更新我的文件或数据库的情况下将 X-sendfile 与 utf-8 文件一起使用

在我的网站上,我们有数千个文档需要使用 x-sendfile 来提供服务。不幸的是,他们中的许多人的标题中都有时髦的 utf-8 字符,而且,由于 HTTP 不支持 utf-8,x-sendfile 也不完全支持。

我可以通过将我的文件名称更改为 URL 编码并更新我的数据库以反映这些值来使 x-sendfile 正常工作,但这很糟糕,因为我有这么多文件,而且将它们全部命名为当我的操作系统(以及大多数其他东西)支持 utf-8 时,各种 URL 编码。

有没有一种方法可以在不更改文件名和数据库的情况下使用 x-sendfile?

0 投票
1 回答
359 浏览

php - 构建 X-Sendfile 标头发送方以查看“隐藏”文件

今天我遇到了一个问题,说我应该对公众隐藏一些文件。实际上,这些是一些“特定于用户”的文件,因此所有者以外的其他人应该看不到它们。

如果有其他选项,我不想用fread或类似的东西读取文件,所以我对这个问题进行了一些研究,并在 SO 上的另一个线程上找到了 X-Sendfile mod for apache。

几乎可以满足我的需要。除了一件事。这些文件使用 htaccess 隐藏,它们对“世界”不可见,我可以在身份验证后使用 X-Sendfile 标头为它们提供服务。

但是如果有人创建了一个 php 脚本和我的一样呢?用户可能会记住文件的 url。这些文件将可供他们使用。那很糟...

您知道我能做些什么来防止所有者以外的其他人在没有权限的情况下访问他们的文件吗?我首先需要一个 nginx 的解决方案。

这些文件位于没有 PHP 的服务器上,它只是一个静态文件服务器。

将文件移动到其他目录是行不通的,它会更痛苦。

谢谢

更新 似乎我错过了下载的文件是 0Kb 或类似的东西,因为我无法再次做到这一点。

0 投票
1 回答
1249 浏览

php - 使用 X-Sendfile 下载文件的文件名

我使用 X-Sendfile 发送文件而不是 readfile。处理这个的脚本名为 download.php 并包含以下内容:

但问题是下载的文件总是命名为“download.php”(155Mb),我想下载它命名为file.mp4。我尝试了几件事,例如:

以及所有其他可能性,但仍将文件下载为 download.php。

我的 htaccess 文件包含: XSendFile On

0 投票
1 回答
543 浏览

django - mp3 发送正常,但 mp4 不发送(Django 和 X-Sendfile)

在我的网页上单击播放后,从服务器发送了一个 mp3 文件,在浏览器中只看到发送了 3 个请求。我添加到响应 X-Sendfile 标头中,响应到达时没有它,所以我了解 mod_xsendfile 配置正常。

奇怪的是,当我在mp4上单击播放时,浏览器开始发送数百个请求,电影开始并卡住了!此处的响应中没有“X-Sendfile”标头...

如果我将 cideo 元素中的源更改为其他站点的某个 mp4 文件 - 一切正常(电影运行顺利且只有几个请求)。

问题是什么?

一些代码...

HTML:

.ht 访问:

响应标头:(mp4)

0 投票
1 回答
631 浏览

php - X-SendFile 有什么作用?

在四处打听和做一些研究时,似乎很多人确实在推动 X-Sendfile 作为从 PHP 脚本向基于浏览器的客户端提供大型可下载文件的首选方法。

我一直在研究的一些方法是:

  • 流式传输
  • 流式 cURL
  • 文件获取内容
  • 卷曲
  • X-发送文件

其中,大多数人告诉我 X-Sendfile 是最好的。

问题是,我正在尝试实现一种下载方法,它不仅能够处理大文件,而且在大多数服务器上广泛通用,因为我编写的脚本将被许多其他服务器使用,而不仅仅是我自己的。

我的问题是:是什么让 X-Sendfile 变得更好?如果它这么好,为什么我没有听到很多关于它的消息,为什么它没有被更频繁地使用?最后,大多数典型的低预算共享网络主机是否支持 X-Sendfile?

谢谢!

0 投票
1 回答
2158 浏览

php - X-Sendfile 错误,找不到文件

我正在使用 apache2 网络服务器并且我已经安装了 mod_xsendfile 我有类似的东西:

我在 /etc/apache2/apache2.conf 中启用:

当我单击 /file/index.php 中的下载按钮时,它给了我错误,index.php 位于 /file/ Not Found

我一开始就尝试过移动header('X-Sendfile: /file/protected/file.zip');,但它是一样的..

当我使用header("X-Accel-Redirect: /file/protected/file.zip");它时它工作但给了我空的 .zip 文件,无论如何它不是 apache2 服务器..

文件只有几 KB

谁知道怎么修它 ?

编辑: 它在error.log中说:给定路径高于根路径:xsendfile:无法找到文件:/protected/file.zip

我设置了 XSendFilePath /protected ,现在的错误是: (2)No such a file or directory: xsendfile cannot open file: /protected/file.zip,referer: http://domain.com/file/

0 投票
1 回答
3122 浏览

apache - 致命错误:安装 x-sendfile mac os x 山狮服务器时找不到“apr.h”文件

当我将我的 Lion 服务器升级到 Mountain Lion 时,它似乎从 apache 中删除了我的 mod_xsendfile。

我按照网站的说明进行操作,但遇到“没有这样的文件或目录”错误。在谷歌的帮助下,我发现这个页面给了我解决方案:“sudo ln -s /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/ /Applications/Xcode.app/Contents/Developer/工具链/OSX10.8.xctoolchain"

看起来不错,但是当我尝试运行“sudo apxs -cia mod_xsendfile.c”时,我收到“致命错误:找不到'apr.h'文件”错误。

有任何想法吗?