cURL没有正确下载图像

时间:2010-01-27 22:17:18

标签: php drupal curl

我遇到cURL问题。我正在下载图像并将其保存到文件夹中。 cURL创建的文件具有正确的文件大小,这使我认为正确读取了标头。但是,当我在浏览器或任何图片浏览应用程序中打开文件时,顶部只有一小部分实际上已经被写入了。我的代码:

function _vancore_curl_savefile($url) {
  $url = str_replace("\"", "", $url);
  $basename = basename($url);
  $basename = str_replace("%20", "_", $basename);
  $var = file_directory_path() . "/van/" . $basename;
  $uvar = "files/van/" . $basename;
  $handle = fopen($var, "w");
  $curl = curl_init($url);
  curl_setopt($curl, CURLOPT_FILE, $handle);
  $result = curl_exec($curl);
  $result2 = $result;
  curl_close($curl);
  fclose($handle);
  return $uvar;
}

file_directory_path()是一个Drupal函数(此函数是Drupal模块的一部分,并为每个需要下载的文件调用),它返回Drupal文件下载目录的路径。我通过各种测试确认:

a)$url应该是什么 b)fopen()正在打开正确的文件
c)curl_exec()在执行后返回true

我对这里出了什么问题很困惑。有人有什么想法吗?

TIA,
本吉

4 个答案:

答案 0 :(得分:2)

你好像没有在Drupal curl模块中使用curl库“emulation”。你是?这并不总是奏效。确保安装了真正的PHP curl库。

答案 1 :(得分:1)

集:

curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);

答案 2 :(得分:1)

尝试这是否有帮助:

curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);

答案 3 :(得分:1)

如上所述,可能是您遗失curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);(以及CURLOPT_RETURNTRANSFER

Here就是一个例子。