Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pobranie obrazka z adresu url
Forum PHP.pl > Forum > Przedszkole
pzcjnr
Witam,

Przygotowuje sobie skrypt który ma przed sobą z pozoru proste zadanie. Zapisać na ftp obrazek z podanego adresu url.

Problem się pojawił gdyż na serwerze jest wyłączone pobieranie plików z adresów zewnętrznych i nie mogę używać funkcji fopen, file_get_contents etc bo mam błąd typu:
Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration in

Nie mam możliwości ingerencji w konfig serwera więc co mi pozostaje? Szukam alternatyw.
Do głowy mi przychodzi curl. Jest jednak problem, stworzyłem coś takiego:

  1. $id = mysql_insert_id();
  2. $c = curl_init();
  3. $file = fopen($image, 'w+');
  4. curl_setopt($c, CURLOPT_URL, $image);
  5. curl_setopt($c, CURLOPT_HEADER, 0);
  6. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  7. curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla 5.0');
  8. curl_setopt($c, CURLOPT_FILE, $file);
  9. $wynik=curl_exec($c);
  10. fclose($file);
  11. $nazw = '/'.$obrazki.'id'.$id.'.'.$rozsz.'';
  12. file_put_contents($nazw,$wynik);
  13. curl_close($c);


niestety nie działa... nie zapisuje na ftp. Kto mi coś doradzi?
CuteOne
używasz fopen(który podobno nie działa) z tym samym adresem co curl?

  1.  
  2. $url = 'http: // www. domena. pl/'; //usuń spacje
  3.  
  4. $c = curl_init();
  5. curl_setopt($c, CURLOPT_URL, $url);
  6. curl_setopt($c, CURLOPT_HEADER, 0);
  7. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  8. curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla 5.0'); //co to za useragent?
  9. $wynik=curl_exec($c);
  10. curl_close($c);
  11.  
  12. $nazw = '/'.$obrazki.'id'.$id.'.'.$rozsz.'';
  13. file_put_contents($nazw,$wynik);
  14.  

pzcjnr
Dzięki, ale jest jeden problem.

Warning: file_put_contents(/images/fot/id14.jpg) [function.file-put-contents]: failed to open stream: No such file or directory in...
na ftp mam folder images mam folder fot. fot ma 777 chmod. Oczywiście pliku id14.jpg tam nie ma bo on dopiero ma się zapisać. Chyba nie da rady z tym file_put_content...
wookieb
Chyba nie da rady z tąką ścieżką... Usuń "/" sprzed "images"
pzcjnr
Po usunięciu "/" też nie działa. A to dlatego, że plik ze skryptem jest w lokalizacji /acp/dodaj.php Chce zapisać do /images/fot/
Manipulując ścieżką udaje mi się zapisać grafikę do katalogu /acp/.

Tylko pytanie teraz jak zapisać ścieżkę dobrze. jak wpisze /images/fot/ nie działa, jak wpisze images/fot/ też nie działa bo w takim wypadku szuka mi katalogu images w folderze /acp/ . jak więc zapisać ścieżkę żeby skrypt pierw "wrócił" do katalogu głównego i dopiero potem przeszedł do /images/fot/ i zapisał tam?
CuteOne
Poczytaj o ścieżkach względnych i bezwzględnych. Po ich lekturze powinieneś sam dojść co jest nie tak smile.gif
pzcjnr
Dzięki wszystkim, już działa smile.gif

  1. $id = mysql_insert_id();
  2. $c = curl_init();
  3. curl_setopt($c, CURLOPT_URL, $image);
  4. curl_setopt($c, CURLOPT_HEADER, 0);
  5. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  6. curl_setopt($c, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)');
  7. $wynik=curl_exec($c);
  8. curl_close($c);
  9. $basedir = $_SERVER['DOCUMENT_ROOT'];
  10. $nazw = $basedir.'/'.$obrazki.'id'.$id.'.'.$rozsz.'';
  11. file_put_contents($nazw,$wynik);
  12.  
  13.  
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.