Php 如何在不使用主机带宽传输的情况下从另一个FTP主机读取文件
我有一个存储数据的主机和一个下载主机(这个主机没有数据库)。我想从存储主机中的下载主机中读取一个文件,并将其交给用户下载,但我不想在用户下载文件时使用存储主机的每月带宽传输,而只是使用下载主机带宽传输 我知道有两种方法:Php 如何在不使用主机带宽传输的情况下从另一个FTP主机读取文件,php,ftp,Php,Ftp,我有一个存储数据的主机和一个下载主机(这个主机没有数据库)。我想从存储主机中的下载主机中读取一个文件,并将其交给用户下载,但我不想在用户下载文件时使用存储主机的每月带宽传输,而只是使用下载主机带宽传输 我知道有两种方法: ftp\u获取下载文件并将其保存在本地文件中,然后设置头以供下载。我不想使用这种方式,因为下载文件在商店主机 // in store host $local_file = 'app.apk'; $ftp_file = '/uploads/2015/06/1eb6a628c60b
ftp\u获取
下载文件并将其保存在本地文件中,然后设置头
以供下载。我不想使用这种方式,因为下载文件在商店主机
// in store host
$local_file = 'app.apk';
$ftp_file = '/uploads/2015/06/1eb6a628c60bb69a6b6092d03e252c29.apk';
// download file and save it in local
ftp_get($conn_id , $local_file, $ftp_file, FTP_BINARY);
$file_name = 'app.apk';
$file_size = filesize($local_file);
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $file_name);
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $file_size);
readfile($local_file);
文件\u获取\u内容
使用存储主机的带宽传输
// in store host
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $file_name);
header('Content-Transfer-Encoding: binary');
header('Connection: Keep-Alive');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $file_size);
// readfile($local_file);
$c = file_get_contents('ftp://login:pass@download-host.com/uploads/2015/06/app.apk');
echo $c;
我不想在存储主机中使用带宽传输;我可以走哪条路?方式2或其他方式?如果不向客户提供下载所需的所有信息(“下载链接”),就无法将内容从“下载主机”直接下载到客户机 如果需要对客户端隐藏下载信息,则需要在“存储主机”上下载文件,然后将其转发给客户端。因此,您正在使用“存储主机”的带宽数据。不管你使用什么技术、协议或功能。以及
ftp\u get
和file\u get\u内容(“ftp://...“”
无论如何都要使用相同的代码
简单地说,既不能从客户端隐藏下载信息,也不能不使用“存储主机”的带宽数据。您每次都在尝试将数据下载到存储主机。然后将其转发给用户。这样,您将始终使用存储主机带宽。。。。客户端应该直接从下载主机下载。但我不想给所有用户提供下载链接,当用户开始下载时,我会在数据库中保存一些数据。谢谢。然后我应该在“下载主机”中创建一个下载页面,然后创建一个类似“download host.com?file=dlkodkdo.apk”的链接,然后用
curl
将一些数据发送到“存储主机”,并设置要下载的头文件和读取文件:),这样更好。