Autor Zpráva
martinkloubek
Profil *
ahojky,
mám problém s cURL a to při stahování fotek. Stahuji ještě soubory XML a ZIP a ty jsou v pořádku,ale u fotografií stáhne soubor a má 0 kb.
Ale pouze u některých. Předtím jsem stahoval fotky normálně přes copy a vše bylo ok, takže fotkami to není.
nevíte jak to řešit s cURL začínám koukal jsem na php.net ale s IMG jsem tam nic nenašel.
používám tuto funkci:

function cURLdownload($url, $file)
{
if( !cURLcheckBasicFunctions() ) return "UNAVAILABLE: cURL Basic Functions";
$ch = curl_init();
if($ch)
{
$fp = fopen($file, "w");
if($fp)
{
if( !curl_setopt($ch, CURLOPT_URL, $url) ) return "FAIL: curl_setopt(CURLOPT_URL)";
if( !curl_setopt($ch, CURLOPT_FILE, $fp) ) return "FAIL: curl_setopt(CURLOPT_FILE)";
if( !curl_setopt($ch, CURLOPT_HEADER, 0) ) return "FAIL: curl_setopt(CURLOPT_HEADER)";
if( !curl_exec($ch) ) return "FAIL: curl_exec()";
curl_close($ch);
fclose($fp);
return "SUCCESS: $file [$url]";
}
else return "FAIL: fopen()";
}
else return "FAIL: curl_init()";
}

ZKOUSEL JSE TAKE TOTO:
$fotka ="URL ADRESA";
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $fotka);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
// Getting binary data
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
// Save image in binary in $image
$image = curl_exec($ch);
curl_close($ch);
bohyn
Profil
martinkloubek
A copy() na tu samou fotku ted funguje? Majitel webu mohl zakazat hotlinkovani.
martinkloubek
Profil *
ne copy už nefunguje musel jsem dát allow_url_fopen na off, měli napadení serveru, ale přetím jsem to stahoval copy a fotky byli ok
když dám přímo adresu dané fotky tak se mi v prohlížeči zobrazí takže cesta je správna, jen to prostě uloží s 0 kb...
martinkloubek
Profil *
jde o hromadné stahování více fotek a polovinu stáhne OK a polovinu s 0 kb.
bohyn
Profil
martinkloubek
Mozna by se dala zjistit chyba z HTTP hlavicek. Co vypise
var_dump(curl_getinfo($ch));
martinkloubek
Profil *
tak jsem to vyřešil upravou kodu a tady je pro případ ostatních

$ch = curl_init($fotka);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$output = curl_exec($ch);

$fh = fopen("../fota/". $sql_us[adresar]."/".$nazev_img, 'w');
fwrite($fh, $output);
fclose($fh);

v této verze stáhne všechny fotky, jak má ve správné velikosti a to když má server vypnutý allow_url_fopen
jinak děkuji za pomoc...
AM_
Profil
martinkloubek
a v čem je ta změna?
martinkloubek
Profil *
Abych řekl pravdu nevím, možná v jednoduchosti je krása, v každém případě takto jednoduché to funguje bez problémů.
Zatím jsem neměl čas se do Curl ponořit víc, možná někdo napíše v čem vlastně vznikala chyba.
Podotýkám že problém vzniká pouze u fotografií
AM_
Profil
Nebyla náhodou v tom, že v prvním skriptu jsi zapomněl výsledek curl_exec někam uložit nebo vypsat? :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: