【发布时间】:2016-07-05 14:13:19
【问题描述】:
以下问题: 我的服务器上有一个大文件(~2GB)。 登录到我的站点的用户可以从我的服务器下载此文件。
不幸的是,我的服务器没有那么强大。当许多用户同时下载此文件时,他们的 dl 速度都会很差。
所以我将文件上传到谷歌驱动器并生成一个直接下载链接: http://googledrive.com/host/[FILE_ID]
我的代码:
<?php
$remoteFile = 'http://googledrive.com/host/[FILE_ID]';
$filename = basename($remoteFile);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$filename\"");
echo file_get_contents($remoteFile);
?>
我的问题:是 file_get_contents() 真的绕过了 dl 还是这个文件通过我的服务器?如果是这样,那没有任何意义:[]
【问题讨论】:
-
您所做的只是将其存储在其他地方。这不会解决任何带宽问题。您可以始终将用户重定向到直接下载页面。
-
但我想隐藏 googledrive 链接。用户不应该有机会获得 googledrive 链接并分享它。只有在用户登录时才能下载
-
如果他们没有看到 google 驱动器链接,这意味着您首先将文件传输到服务器,然后传输到客户端,这会使您的带宽问题加倍。一种解决方案可能是在每次下载后生成唯一的 google drive share 链接,这样只有经过身份验证的用户才能下载,并且链接不能多次使用。
-
我现在的解决方案是租一个可以解释php的服务器。将文件存储在那里,如果使用某个令牌,则创建一个流式传输文件的 php 脚本。令牌将从 $_GET 获取
标签: php file-get-contents download mirroring