cURL下载Zip文件 - “参数不是有效的文件句柄资源”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cURL下载Zip文件 - “参数不是有效的文件句柄资源”相关的知识,希望对你有一定的参考价值。

我正在尝试从我托管的服务器下载一个zip文件,并使用php和cURL将其存储在另一台服务器上。我的PHP看起来像这样:

set_time_limit( 0 );
$ci = curl_init();
curl_setopt_array( $ci, array(
    CURLOPT_FILE    =>  '/directory/images.zip',                // File Destination
    CURLOPT_TIMEOUT =>  3600,                                   // Timeout
    CURLOPT_URL     => 'http://example.com/images/images.zip'   // File Location
) );
curl_exec( $ci );
curl_close( $ci );

每当我运行这个时,我在CURLOPT_URL行上得到以下错误:

警告:curl_setopt_array():提供的参数不是...中的有效文件句柄资源

如果我直接在浏览器中访问文件位置,则会下载。我是否需要传递某种标题信息,以便它知道它是一个zip文件?有什么方法可以调试吗?

答案

您的问题是您必须将文件句柄传递给CURLOPT_FILE,而不是文件路径。这是一个有效的例子

$ci = curl_init();
$url = "http://domain.com/images/images.zip"; // Source file
$fp = fopen("/directory/images.zip", "w"); // Destination location
curl_setopt_array( $ci, array(
    CURLOPT_URL => $url,
    CURLOPT_TIMEOUT => 3600,
    CURLOPT_FILE => $fp
));
$contents = curl_exec($ci); // Returns '1' if successful
curl_close($ci);
fclose($fp);

以上是关于cURL下载Zip文件 - “参数不是有效的文件句柄资源”的主要内容,如果未能解决你的问题,请参考以下文章

php curl get 下载远程zip文件保存在本地例子

使用 CURL 下载的档案无效

如何使用 PHP 下载 .zip 文件

Linux学习:curl 与 wget命令

windows下使用curl命令 && 常用curl命令

windows下使用curl命令&&常用curl命令