Autor | Zpráva | ||
---|---|---|---|
martinkloubek Profil * |
#1 · Zasláno: 4. 6. 2009, 13:51:21
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 |
#2 · Zasláno: 4. 6. 2009, 15:05:16
martinkloubek
A copy() na tu samou fotku ted funguje? Majitel webu mohl zakazat hotlinkovani. |
||
martinkloubek Profil * |
#3 · Zasláno: 4. 6. 2009, 17:09:04
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 * |
#4 · Zasláno: 4. 6. 2009, 17:12:21
jde o hromadné stahování více fotek a polovinu stáhne OK a polovinu s 0 kb.
|
||
bohyn Profil |
#5 · Zasláno: 4. 6. 2009, 18:21:08 · Upravil/a: bohyn
martinkloubek
Mozna by se dala zjistit chyba z HTTP hlavicek. Co vypise var_dump(curl_getinfo($ch)); |
||
martinkloubek Profil * |
#6 · Zasláno: 5. 6. 2009, 15:08:41
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 |
#7 · Zasláno: 5. 6. 2009, 15:18:04
martinkloubek
a v čem je ta změna? |
||
martinkloubek Profil * |
#8 · Zasláno: 7. 6. 2009, 10:08:58
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 |
#9 · Zasláno: 7. 6. 2009, 19:24:55
Nebyla náhodou v tom, že v prvním skriptu jsi zapomněl výsledek curl_exec někam uložit nebo vypsat? :)
|
||
Časová prodleva: 15 let
|
0