Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][cURL]Przechwytywanie zdalnego obrazu i jego zapis
Forum PHP.pl > Forum > Przedszkole
Slash0r
Witam, mam następujący kod:
  1. $date = date('H i d m Y');
  2. $date = str_replace(" ", "_", $date);
  3.  
  4. $image = file_get_contents('http://82.177.67.40:65530/test/stok.jpg') or die('Nie mozna przechwycic obrazu');
  5. $create = fopen("storage/$dateYear/$dateMonth/$dateDay/stok_$date.jpg", 'w+') or die('Nie mozna stworzyc pliku');
  6. echo '<br />zapisano stok_'.$date.'.jpg';
  7. fputs($create, $image) or die('Nie mozna zapisac do pliku');
  8. fclose($create);
  9. unset($image);

działa on idealnie na moim lokalnym serwerze, ale na x10hosting.com na którym mam konto zablokowane jest file_get_contents. Dlatego musiałem znaleźć alternatywe przez cURL i chyba cos mi ta alternatywa nie działa:) Oto ona:
  1. $date = date('H i d m Y');
  2. $date = str_replace(" ", "_", $date);
  3.  
  4. function file_get_contents_curl($url) {
  5. $ch = curl_init();
  6.  
  7. curl_setopt($ch, CURLOPT_HEADER, 0);
  8. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //Set curl to return the data instead of printing it to the browser.
  9. curl_setopt($ch, CURLOPT_URL, $url);
  10.  
  11. $data = curl_exec($ch);
  12. curl_close($ch);
  13.  
  14. return $data;
  15. }
  16.  
  17. $image = file_get_contents_curl('http://82.177.67.40:65530/test/stok.jpg') or die('Nie mozna przechwycic obrazu');
  18. $create = fopen("storage/$dateYear/$dateMonth/$dateDay/stok_$date.jpg", 'w+') or die('Nie mozna stworzyc pliku');
  19. echo '<br />zapisano stok_'.$date.'.jpg';
  20. fputs($create, $image) or die('Nie mozna zapisac do pliku');
  21. fclose($create);
  22. unset($image);

Skrypt zapisuje mi plik o danej nazwie prawidłowo ale jest on pusty i ma rozszerzenie .txt. Mógłby mi ktoś z tym pomóc, tak aby zapisywało obraz do zadanego folderu bez file_get_contents? Z góry dzięki za pomoc!
CuteOne
zamiast bawić się curlem

$handle = fopen($url);
fwrite($handle, $data);
fclose($handle);
Slash0r
Zrobiłem tak:
  1. $url = "http://82.177.67.40:65530/test/stok.jpg";
  2. $dir = "storage/";
  3.  
  4. $rfile = fopen($url, "r");
  5. $lfile = fopen($dir . basename($url), "w");
  6.  
  7. fwrite($lfile, 1);
  8.  
  9. fclose($rfile);
  10. fclose($lfile);;

i nie działa nawet na lokalnym...
CuteOne
poczytaj o fwrite i fopen..
Slash0r
No więc wymyśliłem coś takiego:
  1. function save_image($inPath,$outPath)
  2. {
  3. $in=fopen($inPath, "rb");
  4. $out=fopen($outPath, "wb");
  5. while ($chunk = fread($in,8192))
  6. {
  7. fwrite($out, $chunk, 8192);
  8. }
  9. fclose($in);
  10. fclose($out);
  11. }
  12.  
  13. save_image('http://82.177.67.40:65530/test/stok.jpg','image.jpg') or die('error');

[/php]
Działa dobrze na lokalnym, nie używa file_get_contents, ale i tak nie działa. Czy to możliwe, żeby na serwer nie dało się ściągnąć ŻADNEGO zdalnego pliku? allow_url_fopen jest włączone, a i tak nie smiga co_jest.gif
phpinfo: http://kamera.x10.mx/get-image.php
timon27
Programujesz w php. Coś się znasz.
Moim zdaniem jesteś w stanie zarobić 50 zł na rok na porządny serwer.
serio
Kiedyś też korzystałem z darmowych i powiem ci, że kombinowania za dużo.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.