Reputation: 4716
I'm having a problem with cURL. I am downloading images and saving them to a folder. The file that cURL creates has the right filesize, which makes me think that the headers are being read properly. But, when I open the file up in my browser or in any picture-viewing application, only a tiny bit at the top appears to actually have been written. My code:
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()
is a Drupal function (this function is part of a Drupal module and called for each file that needs to be downloaded) that returns the path to the Drupal file download directory. I have confirmed through various tests that:
a) $url
is what it should be
b) fopen()
is opening the right file
c) curl_exec()
is returning true
after it is executed
I am very confused about what is going wrong here. Anyone have any thoughts?
TIA,
Benjy
Upvotes: 1
Views: 2834
Reputation: 141
You don't happen to be using the curl library "emulation" in the Drupal curl module. Are you? That doesn't always work. Make sure you have the real PHP curl library installed.
Upvotes: 2
Reputation: 5393
May be you're missing curl_setopt($curl, CURLOPT_BINARYTRANSFER, 1);
(along with CURLOPT_RETURNTRANSFER
, as said above)
Here is an example.
Upvotes: 1
Reputation: 5642
Try if this helps:
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_TIMEOUT, 60);
Upvotes: 1