Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Zapisanie obrazka innego serwea na swoim
Forum PHP.pl > Forum > PHP
Maniek159
Cześć,

Potrzebuję rozwiązać następujący problem - mam obrazek powiedzmy:

www.jakas-domena-z-obrazkami.pl/interesujacy-mnie-obraz.gif

Chcę,by on znalazł się na moim serwerze, i chce go po prostu skopiować na swój serwer. Jednakże funkcja copy() wywala mi błąd.

Jakieś pomysły?

Pozdro
wookieb
No a jaki błąd Ci wywala?
Pozostaje jeszcze curl
Kshyhoo
Pokaż swój kod, wróżki też miewają wakacje... Ja robiłem kiedyś tak i działało:
  1. <form>
  2. ...
  3. <input type="" name="url" size="50" />
  4. ...
  5. </form>
  6. <?php
  7. $zdalny = $_POST['url'];
  8. $zdalny = str_replace(' ', '', $zdalny);
  9. $uploaded = $upload_dir . basename($url);
  10.  
  11. if (!is_dir($upload_dir)) {
  12. die ('Błąd! Katalog docelowy '.$upload_dir.' nie istnieje!');
  13. }
  14. $uploaded = preg_replace('/[!?@#$%^&*()+=\';><,!:"\/\[\]\{\}]+/', '', $uploaded); // znaki na spacje
  15. $we1 = array('ą','ć','ę','ł','ń','ó','ś','ź','ż','Ą','Ć','Ę','Ł','Ń','Ó','Ś','Ź','Ż',' ');
  16. $wy1 = array('a','c','e','l','n','o','s','z','z','A','C','E','L','N','O','S','Z','Z','');
  17. $uploaded = str_replace($we1, $wy1, $uploaded);
  18. $uploaded = strtolower($uploaded); // zmień na małe litery
  19. $uploaded = preg_replace('/[\-]+/', '-', $uploaded);// zredukuj liczbę - do jednego obok siebie
  20. $uploaded = preg_replace('/[\_]+/', '_', $uploaded);// zredukuj liczbę _ do jednego obok siebie
  21. $uploaded = trim($uploaded, '-');// usuń możliwe - na początku i końcu
  22. $uploaded = trim($uploaded, '_');// usuń możliwe _ na początku i końcu
  23. $uploaded = wordwrap($uploaded, 50, " ", 1); // pocięcie długich wpisów
  24. $uploaded = preg_replace("/(img)([0-9]{2})([0-9]{2})(.*?)(gif|jpg|jpeg|png|rar|zip|pdf|psd)/","$1/$2/$3/$4$5",$uploaded); // dokłada /
  25. $allowedExtensions = array('gif','jpg','jpeg','png','rar','zip','pdf','psd');// jakie rozszerzenia
  26. $extension = end(explode('.', $uploaded));
  27. if (in_array($extension, $allowedExtensions)) {
  28. if (file_exists($uploaded)) { // czy plik już istnieje
  29. echo 'Błąd! Plik już istnieje!';
  30. } else {
  31. if ($uploaded > 2*1024*1024) { // ograniczenie wielkości
  32. echo 'Błąd! Plik jest za duży!';
  33. } else {
  34. $zdalny_wielkosc = strlen(@file_get_contents($zdalny));
  35. if ($zdalny_wielkosc > 0) { // sprawdzenie, czy większy od 0
  36. $lokalny_wielkosc = (file_exists($uploaded))?filesize($uploaded):-1;
  37. if ($zdalny_wielkosc<>$lokalny_wielkosc) {
  38. copy($zdalny, $uploaded);
  39. chmod($uploaded, 0755);
  40. echo 'Operacja wysyłania pliku przebiegła pomyślnie.';
  41. //redirect("index.php?go=galeria&path=".$_SESSION['tree']['path']."");
  42. } // kontrola pobrania całości
  43. } else {
  44. echo 'Błąd! Prawdopodobnie plik nie istnieje lub podałeś zły link!';
  45. } // mniejszy od 0
  46. } // jeżeli powodzenie
  47. } // jeżeli plik już istnieje
  48. } else {
  49. echo 'Błąd! Niepoprawny format pliku!';
  50. } // rozszerzenia
  51. }// upload
glh
To może takie coś. U mnie np. działa.

  1. <?php
  2. $url="http://se2.php.net/images/php.gif";
  3. file_put_contents(basename($url),file_get_contents($url));
  4. ?>
  5. <img src="<?php echo basename($url);?>"/>
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.