我遇到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,
本吉
答案 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就是一个例子。