问题标签 [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 投票
2 回答
457 浏览

symfony - symfony2 存储上传的文件非 rootweb

我在上传文件时遇到问题,我将上传的文件保存在非公共文件夹(非 webroot 文件夹)中,然后我想获取所有上传文件的 webPAth 以在视频库中使用它们。

然后在我的树枝上

但我无法访问图片,因为该文件夹不是公开的,我知道我必须通过 x-sendFile 但我看不到如何在标题中发送多个 jpeg 文件,然后如何在树枝后恢复。

0 投票
1 回答
151 浏览

php - 使用 X-Send 模块提供 css、javascript 和图像文件

我正在构建一个文件服务器。它目前正在使用 X-Send 完美地提供可下载文件(.doc、.zip)。是否可以使用 x-send 提供基于文本(css/javascript)或图像文件?我的理解是这是最有效的方法,但我总是对想法持开放态度。

我目前拥有的代码......(尝试了各种版本的行注释掉/注释)

0 投票
1 回答
301 浏览

ruby-on-rails - 启用 apache x-sendfile 后找不到 rails 资产图像

我的网站有问题。它是使用:

  • 红宝石 1.9.3
  • 导轨 3.2.9
  • 它由 apache 2 服务器托管。

服务器运行良好,但昨天我在我的代码中进行了更改。
我需要添加一个大文件下载器,为此我使用了 apache 模块:x-sendfile. 当我配置它时,下载操作没有问题。但是当这个模块被启用时,网站的图片就不会显示

config/enviorment/production.rb当我通过添加行在文件 中启用模块时,我发现问题开始了:

问题是 rails 命令 image_tag("it.png") 搜索文件/assets/it.png没有找到它。

我认为这是资产管道配置的问题。

这是我的config/enviorments/production.rb文件:

0 投票
1 回答
450 浏览

php - 下载完成后 X-Sendfile 通知

下载完成后,我需要将下载状态设置为 0。我正在使用 x-sendfile,但完成下载后,不要设置状态。

我的代码:

感谢帮助

0 投票
3 回答
3856 浏览

javascript - HTTP 文件下载:监控下载进度

我处于一种情况,当我必须从 Web 服务器下载大文件(最大 4GB)时:通过 HTTP 协议的 Apache 2.4.4。我尝试了几种方法,但最好的解决方案似乎是使用 X-SendFile 模块。

当我为文件上传提供进度条时,我需要为文件下载提供相同的功能。所以这是我的问题:

  • 有什么方法,包括变通方法,来实现文件下载进度监控?
  • 有什么方法(包括解决方法)来计算文件下载传输速度?
  • 有没有比使用 X-Sendfile 模块更好的方法从 Web 服务器提供有效的文件下载?

一般有没有更好的文件下载选项,可以让我监控文件下载进度?它可以是客户端 (JavaScript) 或服务器解决方案 (PHP)。是否有任何特定的网络服务器允许这样做?

目前我使用:

  • 阿帕奇 2.4.4
  • Ubuntu

多次感谢。

0 投票
1 回答
4891 浏览

php - 通过 Apache 的下载速度比使用 PHP readfile 慢

我在我的服务器上设置了一个带有 PHP 的下载脚本,它在让用户通过 Apache (X-Sendfile) 下载文件之前检查一些细节。文件位于 Document-Root 之外。

使用 Apache 和 Module X-Sendfile 下载的代码是:

使用 Apache 和 X-Sendfile 时,我的客户端下载速度为500 kB/s。我还使用 Apache 和没有 X-Sendfile 的文档根目录中的相同文件对其进行了测试 - 这里也是一样!

所以我测试了下载相同的文件,使用相同的客户端,双方相同的基础设施和相同的互联网连接几秒钟后通过 PHP 和 readfile:

这次下载速度是9.500 kB/s

我多次使用这两个选项重复此测试,每次尝试的结果都是相同的。尝试使用 PHP readfile 方法时,除了下载速度之外,唯一的区别是等待时间为几秒钟(取决于下载的文件的大小)。当立即重复 PHP readfile 方法时,等待时间没有再次出现。很可能是因为它在第一次之后存储在内存中。

我在服务器上使用了一个专业的 HP Raid-System,它的平均本地速度为 800 MB/s,所以原因不能是 Diskspeed。我也没有在 Apache 的 httpd.conf 中找到任何压缩或带宽设置。

你们中的任何人都可以解释为什么下载速度有如此大的差异以及如何改变这种差异?

先感谢您。

  • 服务器:Windows Server 2008 R2 Apache/2.2.21 (Win32) PHP/5.4.20
  • 客户端:Windows 7 Ultimate x64 Google Chrome 30.0.1599.101 LAN >100 Mbit/s
0 投票
2 回答
477 浏览

php - 由 SELinux 引起的 mod-xsendfile 404

好的。想分享这个 - 我花了 10 个小时才弄清楚。

我已经按照此处的良好说明正确安装了 mod-xsendfile 。

我还在 /etc/httpd/conf/httpd.conf 文件中正确配置了 xsendfile,添加了设置: XSendFile on XSendFilePath /var/files_need_valid_session_to_view/

而且我知道生成 X-SENDFILE 标头的代码是正确的:它在不同的服务器上工作。但是,无论我做什么,我都会收到 404 错误。 我的操作系统是 CentOS 6.4 final。

0 投票
3 回答
226 浏览

ruby-on-rails - Rails:使用不完整的文件名打开文件

我在 Rails 上使用 ruby​​,我想知道是否有办法打开一个我缺少文件名的最后几个字符的文件。

例如:我的文件名为“/folder/files/A2222_revA.pdf”。但是,随着时间的推移,这些文件名从 A2222_revA 变为 A2222_revB 再变为 A2222_revC。我将路径和不变名称 (A2222) 保存为变量,我的目标是只打开任何名为 A2222 的文件...因为具有该特定前缀的文件永远不会超过一个。

有没有办法在指定文件夹中按字母数字顺序打开下一个文件名?

我有一个控制器来查看这些文件,如下所示:

draw_path 方法如下所示:

显然这种方法并不完整,我需要添加更多逻辑。

0 投票
2 回答
866 浏览

php - 使用 X-Sendfile 屏蔽静态文件的位置

我在我的网站上提供仅供会员观看的付费视频。目前,我正在通过 PHP 脚本进行整个身份验证和视频流传输,但是它往往会使用大量资源,我想使用 nginx 来实际提供文件。为此,我发现您必须X-Accel-Redirect从您的 PHP 脚本发送标头,然后将文件交给 nginx。

但是,有一个问题,要流式传输的视频的 URL 不是由与该站点相同的服务器提供服务。它来自我的其他网站之一,该网站完全位于不同的 VPS 服务器(和域)上。无论如何,我尝试了这个简单的测试脚本:

但我不知道在我的 nginx 配置中使用什么来提供文件http://other-site.com/protected/videos/test.mp4,同时仍然对用户隐藏原始视频 URL。

当我访问上面的测试脚本时,nginx 返回 a404 Not Found并且错误日志有这样的条目:

因此,nginx 显然试图解析http://other-site.com/protected/videos/test.mp4到站点文档根目录中的路径,而不是识别它是另一个位置的资源并只是“代理”文件。

有人有任何关于让它工作的提示吗?

0 投票
2 回答
946 浏览

javascript - PHP,X-SendFile:将文件与输出文本一起发送到浏览器(通过回显)

我使用X-SendFile Apache Module从服务器下载大文件。下载运行良好。但是,当下载开始时,我需要向浏览器输出一些文本,例如:“Thanks for download the file....”

我的问题是,我不能在一个脚本中同时做到这两点。我可以下载文件,然后没有文本输出到屏幕上。或者,我可以将文本输出到屏幕,但下载脚本无法启动。

请如何在一个 php 脚本中完成这两项任务 - 下载文件并将文本内容发送到浏览器/网页?问题可能源于 HTTP 输出标头,但我不知道如何解决。

这是我用来通过 X-SendFile 下载文件的示例代码(独立工作):

为了完成,这是我的测试echo""字符串。如果将它放在 X-Sendfile 代码之上,它会得到输出,但不会开始下载。如果将其放在 X-Sendfile 代码下方,则会下载文件,但不会向浏览器回显:

约束:

我需要能够通过 URL 轻松下载文件。例如,www.mydomain.com/?fileID=asl523n53twteHLfga。换句话说,PHP 下载脚本在index.php. 当用户输入www.mydomain.com时,将显示域登录页面。但是,当附加$_GET变量被传递时,PHP 脚本会识别出来,并且应该显示Thank you for download...而不是登录页面。

欢迎提供解决方法。重要的是在保持上述约束的同时达到预期的结果。非常感谢你。