gpt4 book ai didi

PHP cURL 实时代理(流文件)

转载 作者:可可西里 更新时间:2023-11-01 13:14:18 31 4
gpt4 key购买 nike

目前我有如下脚本:

<?php
$filename = "http://someurl.com/file.ext";
header('Content-Type: application/octet-stream');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$filename);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 500);
$data=curl_exec($ch);
curl_close($ch);
echo $data;
?>

问题是服务器在下载整个文件后才发送响应。我想让它像“流”一样工作,在下载文件时发送数据 block 作为响应。

用 PHP 和 cURL 可以实现吗?

最佳答案

这是可能的。您可以使用 curl 选项 CURLOPT_WRITEFUNCTION 指定一个回调,您将在其中接收数据 block ,这样您就可以在 curl 下载文件时将它们直接发送到客户端。

<?php

$filename = "http://someurl.com/file.ext";
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$filename);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 500);
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function($curl, $data) {
echo $data;
return strlen($data);
});
curl_exec($ch);
curl_close($ch);

关于PHP cURL 实时代理(流文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38417350/

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