Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] zapis zdalnego pliku jpg
Forum PHP.pl > Forum > PHP
tikky
Witam,

Mam link do pliku jpg http://www.istockphoto.com/design_spotligh...=3&id=21406

ale jak go zapisuje w PHP funkcją:

  1. <?php
  2. function file_post_contents($url,$headers=false) {
  3.     $url = parse_url($url);
  4.  
  5.     if (!isset($url['port'])) {
  6.       if ($url['scheme'] == 'http') { $url['port']=80; }
  7.       elseif ($url['scheme'] == 'https') { $url['port']=443; }
  8.     }
  9.     $url['query']=isset($url['query'])?$url['query':'';
  10.  
  11.     $url['protocol']=$url['scheme'].://';
  12.     $eol="r\n";
  13.  
  14.     $headers =  "POST ".$url['protocol'].$url['host'].$url['path']." HTTP/1.0".$eol.
  15.                 "Hos: ".$url['host'].$eol.
  16.                 "Referer: ".$url['protocol'].$url['host'].$url['path'].$eol.
  17.                 "Content-Typ: application/x-www-form-urlencoded".$eol.
  18.                 "Content-Lengt: ".strlen($url['query']).$eol.
  19.                 $eol.$url['query'];
  20.     $fp = fsockopen($url['host'], $url['port'], $errno, $errstr, 30);
  21.     if($fp) {
  22.       fputs($fp, $headers);
  23.       $result = '';
  24.       while(!feof($fp)) { $result .= fgets($fp, 128); }
  25.       fclose($fp);
  26.       if (!$headers) {
  27.         //removes headers
  28.         $pattern="/^.*r\nr\n/s";
  29.         $result=preg_replace($pattern,'',$result);
  30.       }
  31.       return $result;
  32.     }
  33. }
  34.  
  35. $tresc=file_post_contents('htt://www.istockphoto.com/design_spotlight_fileview.php?size=3&id=21406');
  36. $file = fopen('obrazek.jpg', 'w');
  37. fwrite($file, $tresc);
  38. fclose($file);
  39. ?>



to na początku pliku jpg dodane jest 16 dodatkowych 16 linii, które to uniemożliwiają poprawne otwarcie .jpg:
  1. HTTP/1.0 200 OK
  2. Server: Apache/1.3.37 (Unix)
  3. X-Powered-By: PHP/4.4.9
  4. P3P: CP="OTI DSP COR ADM DEV PSA PSD IVDi OUR PUBi IND PRE"
  5. Pragma: no-cache
  6. Content-Disposition: inline; filename=file.jpg
  7. Content-Type: image/jpeg
  8. Cache-Control: private, max-age=0
  9. Expires: Thu, 25 Sep 2008 15:01:55 GMT
  10. Date: Thu, 25 Sep 2008 15:01:55 GMT
  11. Connection: close
  12. Set-Cookie: sessionID=01657054109277884035342186668268; path=/; domain=.istockphoto.com
  13. Set-Cookie: sessionID=01657054109277884035342186668268; expires=Fri, 26 Sep 2008 15:01:53 GMT; path=/; domain=.istockphoto.com
  14. Expires: Thu, 19 Nov 1981 08:52:00 GMT
  15. Expires: Thu, 19 Nov 1981 08:52:00 GMT


Co zrobić aby nie było tych linii? Lub jak inaczej (prościej) zapisać na lokalnym serwerze plik .jpg ze zdalnego serwera?
hateman
Niepotrzebnie otwierasz tekstowo ten plik :/


zrób tak:
  1. <?php
  2. $file = 'htt://www.istockphoto.com/design_spotlight_fileview.php?size=3&id=21406';
  3. $newfile = 'plik.jpg';
  4.  
  5. copy($file, $newfile);
  6. ?>
sowiq
@tikky,
robisz robota wykradającego fotki z istockphoto? dry.gif
tikky
Wykradajacego to zle slowo. Sam tam sprzedaje swoje fotki wiec znam zasady.

Chciałem zrobic robota który pobrał by mi 100 plików, ale nie zdjęć tylko plików z designer spotlight coby mieć na kompie ciekawe przykłady prac od ludzi, od których się warto uczyć, wszak po to jest tam to publikowane.
sowiq
To jak napisał ~hateman - copy() albo file_get_contents()
tikky
hateman, sowiq: Dzieki, działa juz całość i ściąga :-) Całkiem sprawnie to idzie.
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.