Php cURL下载文件问题

Php cURL下载文件问题,php,curl,google-docs-api,Php,Curl,Google Docs Api,我正试图从Google drive下载一个文件,但当我播放脚本时,会出现以下错误: 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);

我正试图从Google drive下载一个文件,但当我播放脚本时,会出现以下错误:

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);
把这个加到你的卷发上

curl_setopt($ch, CURLOPT_FOLLOWLOCATION , true);
所以你的cule代码是

$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); 
那是我的意思

这意味着libcurl将在新服务器上重新发送相同的请求 位置和跟随新位置:

把这个加到你的卷发上

curl_setopt($ch, CURLOPT_FOLLOWLOCATION , true);
所以你的cule代码是

$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); 
那是我的意思

这意味着libcurl将在新服务器上重新发送相同的请求 位置和跟随新位置:


将此添加到脚本中,您应该会很好

目前,您的脚本只查看您指定的url,不遵循重定向。添加这个,然后脚本将尝试在url字段中指定的url,然后执行所有重定向并返回最终数据、文件或其他内容


curl_setopt$ch,CURLOPT_FOLLOWLOCATION,true

将此添加到脚本中,您应该会没事的

目前,您的脚本只查看您指定的url,不遵循重定向。添加这个,然后脚本将尝试在url字段中指定的url,然后执行所有重定向并返回最终数据、文件或其他内容

curl_setopt$ch,CURLOPT_FOLLOWLOCATION,true

使用这个功能,它会工作的



使用此功能。它将起作用

感谢您的回复,但现在它“没有下载包含内容的文件,现在它在.csv文件中获得google登录的html页面…”:我需要下载$source中的确切内容,复制该链接,然后下载文件,然后看到我想要获得确切的.csv文件..是的,但是我不想通过google登录,我尝试登录,它说你在这个浏览器上禁用了Cookie,但是启用了Cookie谢谢你的回复,但是现在它“没有下载包含内容的文件,现在它在.csv文件中获得了google登录的html页..:我需要下载确切的内容,因为它在$source中,复制该链接,然后下载文件,然后查看我想获得准确的.csv文件..是的,但我不想通过google登录,我尝试登录,它说您在该浏览器上禁用了Cookie,但启用了Cookie谢谢您的响应,但现在它“没有下载包含内容的文件,现在是在.csv文件中获得google登录的html页面。我需要下载$source中的确切内容,复制该链接,然后下载该文件,然后查看我想要获得的确切的.csv文件。这意味着,你需要登录google才能获得你要找的内容。发出CURL POST请求进行登录,CURL设置为接收和保存cookies,然后发出get请求并附上这些cookies。感谢您的回复,但现在不是下载包含内容的文件,而是在.csv文件中获取google登录的html页面。我需要下载$source中的确切内容,复制链接,然后下载文件,然后我想得到确切的.csv文件。这意味着,你需要登录谷歌才能得到你想要的。发出CURL POST请求进行登录,CURL设置为接收和保存cookies,然后发出get请求并附上这些cookies。感谢您的回复,但现在不是下载包含内容的文件,而是在.csv文件中获取google登录的html页面。我需要下载$source中的确切内容,复制该链接,然后下载该文件,然后查看我想要获得的确切的.csv文件。@DeDevelopers谷歌驱动器文档需要登录才能下载。您需要让curl脚本发送用户名和密码,并存储返回的cookie。但是我不想登录,有没有其他方法可以不登录下载该文件,因为它是一个客户端,无论何时,他将单击更新此文件将被加载并在数据库中更新..@DeDevelopers在这种情况下,您需要将文档公开。请注意,这意味着任何人都可以使用URL下载。好吧,这不是问题,我如何公开文件?我是新来的谢谢你的回复,但现在不是下载包含内容的文件,而是在.csv文件中获得谷歌登录的html页面。我需要下载确切的内容,因为它是在$source中,复制该链接,然后下载该文件,然后查看我想要获得的确切的.csv文件。@DeDevelopers谷歌驱动器文档需要登录才能下载。你需要让curl脚本发送用户名和密码,并存储返回的cookie。但是我不想登录,有没有其他方法可以不登录下载该文件,因为这是一个客户端工作,无论何时,他都会
ck on update此文件将被加载并在数据库中更新..@DeDevelopers在这种情况下,您需要将文档公开。请注意,这意味着任何人都可以使用URL下载。好吧,这不是问题,我如何公开文件?我是新来的,你能进一步解释一下为什么会这样吗?你的代码中哪些是关键部分?你能进一步解释一下为什么这会起作用吗?代码中哪些是关键部分?