cURL 下载文件问题
cURL download file issues
我正在尝试从 Google 驱动器下载文件,但是当我播放脚本时,出现以下错误:
Moved Temporarily
The document has moved here.
我的代码如下:
$source = "https://docs.google.com/uc?id=0B8tmy5YxFFGhM0szSUZWVl9qQWc&export=download";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $source);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 2);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
echo $data = curl_exec($ch);
echo $error = curl_error($ch);
//print_r($ch);
$destination = "data.csv";
$file = fopen($destination, "w+");
fputs($file, $data);
fclose($file);
curl_close ($ch);
您似乎收到了重定向。您可以要求 curl 遵循以下重定向:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
给你curl加这个
curl_setopt($ch, CURLOPT_FOLLOWLOCATION , true);
所以你的提示代码是
$source = "https://docs.google.com/uc?id=0B8tmy5YxFFGhM0szSUZWVl9qQWc&export=download";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $source);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 2);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION , true);
echo $data = curl_exec($ch);
echo $error = curl_error($ch);
这意味着
This means that libcurl will re-send the same request on the new
location and follow new Location:
将此添加到您的脚本中,您应该没问题。
目前,您的脚本只查看您指定的 url,并不遵循重定向。所以添加这个,然后您的脚本将尝试您在 url 字段中指定的 url,然后遍历所有重定向和 returns 最终数据、文件或任何其他内容.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
function gett($url) {
$url = str_replace(" ", '%20', $url);
fopen("cookies.txt", "w");
$parts = parse_url($url);
$host = $parts['host'];
$ch = curl_init($url);
$header = Array('Connection:keep-alive',
'Proxy-Connection: Close',
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1017.2 Safari/535.19',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: en-US,en;q=0.8',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Connection: Close');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_USERAGENT, $_REQUEST['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
使用这个功能。它会起作用
我正在尝试从 Google 驱动器下载文件,但是当我播放脚本时,出现以下错误:
Moved Temporarily
The document has moved here.
我的代码如下:
$source = "https://docs.google.com/uc?id=0B8tmy5YxFFGhM0szSUZWVl9qQWc&export=download";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $source);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 2);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
echo $data = curl_exec($ch);
echo $error = curl_error($ch);
//print_r($ch);
$destination = "data.csv";
$file = fopen($destination, "w+");
fputs($file, $data);
fclose($file);
curl_close ($ch);
您似乎收到了重定向。您可以要求 curl 遵循以下重定向:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
给你curl加这个
curl_setopt($ch, CURLOPT_FOLLOWLOCATION , true);
所以你的提示代码是
$source = "https://docs.google.com/uc?id=0B8tmy5YxFFGhM0szSUZWVl9qQWc&export=download";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $source);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 2);
curl_setopt($ch, CURLOPT_SSLVERSION,3);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION , true);
echo $data = curl_exec($ch);
echo $error = curl_error($ch);
这意味着
This means that libcurl will re-send the same request on the new location and follow new Location:
将此添加到您的脚本中,您应该没问题。
目前,您的脚本只查看您指定的 url,并不遵循重定向。所以添加这个,然后您的脚本将尝试您在 url 字段中指定的 url,然后遍历所有重定向和 returns 最终数据、文件或任何其他内容.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
function gett($url) {
$url = str_replace(" ", '%20', $url);
fopen("cookies.txt", "w");
$parts = parse_url($url);
$host = $parts['host'];
$ch = curl_init($url);
$header = Array('Connection:keep-alive',
'Proxy-Connection: Close',
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1017.2 Safari/535.19',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: en-US,en;q=0.8',
'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Connection: Close');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt');
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_USERAGENT, $_REQUEST['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$result = curl_exec($ch);
curl_close($ch);
return $result;
}
使用这个功能。它会起作用