如果运行以下PHP,我想在客户端站点上使用`cURL下载文件。这意味着,如果我的网站访问者运行的一个操作将启动此PHP文件,则应在该PC上下载该文件。
我在不同的位置尝试过,但没有成功。如果我运行代码,它将始终将其下载到我想要的WebSever上。
<?php
//The resource that we want to download.
$fileUrl = 'https://www.example.com/this-is-a-example-video';
//The path & filename to save to.
$saveTo = 'test.mp4';
//Open file handler.
$fp = fopen($saveTo, 'w+');
//If $fp is FALSE, something went wrong.
if($fp === false){
throw new Exception('Could not open: ' . $saveTo);
}
//Create a cURL handle.
$ch = curl_init($fileUrl);
//Pass our file handle to cURL.
curl_setopt($ch, CURLOPT_FILE, $fp);
//Timeout if the file doesn't download after 20 seconds.
curl_setopt($ch, CURLOPT_TIMEOUT, 20);
//Execute the request.
curl_exec($ch);
//If there was an error, throw an Exception
if(curl_errno($ch)){
throw new Exception(curl_error($ch));
}
//Get the HTTP status code.
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
//Close the cURL handler.
curl_close($ch);
if($statusCode == 200){
echo 'Downloaded!';
} else{
echo "Status Code: " . $statusCode;
}
?>
如何将cURL downloading process
更改为client-site
?
答案 0 :(得分:0)
PHP无法运行客户端。
您可以使用cURL将数据下载到服务器(不保存到文件中),然后将数据输出到客户端。
不要这样做:
//Open file handler. $fp = fopen($saveTo, 'w+');
或者这个:
//Pass our file handle to cURL. curl_setopt($ch, CURLOPT_FILE, $fp);
然后捕获输出:
//Execute the request. curl_exec($ch);
应该是:
//Execute the request.
$output = curl_exec($ch);
然后您可以:
echo $output;
…,但请确保设置Content-Type
并考虑设置Content-Length
响应标头。您可能还需要Content-Disposition
。
在大多数情况下,最好直接发送浏览器直接获取文件,而不是通过服务器代理。
$fileUrl = 'https://www.example.com/this-is-a-example-video';
header("Location: $fileUrl");