gpt4 book ai didi

php - 从服务器 > 服务器 > 客户端传输,无需下载到服务器

转载 作者:行者123 更新时间:2023-12-02 15:46:06 25 4
gpt4 key购买 nike

这是我的案例:我在服务器上有一个文件(例如 www.server1.com/file.rar)。我想将此文件发送给我的客户。但是,www.server1.com 只接受来自一个 IP 的连接。我有很多客户,所以我有很多IP。

解决方案可以将文件从www.server1.com传输到www.server2.com(只有一个IP地址)并提供文件:www.server2.com/file.rar但是...在这种情况下,我需要将文件从 server1 传输到 server2,这就是(带宽和空间)。

有什么替代方案吗?我在想这样的事情:

header("Content-Disposition: attachment; filename=" . urlencode($file));    
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");

file_get_contents("http://server1.com/file.rar");

但没有按预期工作。

提前致谢


编辑:我无法回答我自己的问题,因为我是新用户......好吧,我想感谢大家的回复,他们给我提供了解决方案。这是:由于服务器刷新,file_get_contents 不起作用,所以我将 fopen 和 fread 与 ob_flush 和 flash 一起使用

header("Content-Disposition: attachment; filename=" . urlencode($arr[1])); //$arr[1]
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");header("Content-Description: File Transfer");
ob_flush();
flush();
$fp = fopen($url, "r");//$url variable with file url
while (!feof($fp)) {
echo fread($fp, 65536);
ob_flush();
flush();
}
fclose($fp);

谢谢!

最佳答案

这里是一些示例代码。我还没有测试过,但认为它会起作用。使用 cURL 和 mod 重写隐藏文件的真实位置。

<?php 
function downloader($url){
$file_name = basename($url);
$generated_file = geturl($url, $url);
file_put_contents($file_name,$generated_file);
$size=strlen($generated_file);
if($size==0){die("<b>Error:</b>Location to download not found!");}
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename=' . $file_name);
header('Content-Transfer-Encoding: binary');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size);
readfile($file_name);
unlink($file_name);
}

function geturl($url, $referer) {
$headers[] = 'Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg';
$headers[] = 'Connection: Keep-Alive';
$headers[] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';
$user_agent = 'ONLY_MY_HOST';
$process = curl_init($url);
curl_setopt($process, CURLOPT_HTTPHEADER, $headers);
curl_setopt($process, CURLOPT_HEADER, 0);
curl_setopt($process, CURLOPT_USERAGENT, $useragent);
curl_setopt($process, CURLOPT_REFERER, $referer);
curl_setopt($process, CURLOPT_TIMEOUT, 30);
curl_setopt($process, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($process, CURLOPT_FOLLOWLOCATION, 1);
$return = curl_exec($process);
curl_close($process);
return $return;
}


downloader('www.server2.com/file.rar','http://www.server1.com');

?>
-CONTENT SERVER PART
<?php
/*
.htaccess
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^\.]+)$ serve.php?file=$1 [NC,L]
*/

//serve.php
if($_SERVER['HTTP_REFERER']=='http://www.server1.com' && $_SERVER['HTTP_USER_AGENT'] =='ONLY_MY_HOST' && $_SERVER['REMOTE_ADDRESS']=='123.123.123.123'){
readfile('./file_store/'.$_REQUEST['file']);
die();
}
header('Location: http://www.server1.com');
?>

关于php - 从服务器 > 服务器 > 客户端传输,无需下载到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6086231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com