Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zapisanie zdjęcia mając tylko jego link
Forum PHP.pl > Forum > Przedszkole
kielich
Witam czy macie sposób w jakim mógłbym zapisać zdjęcie do katalogu mając tylko jego link np. jakaś_tam_sobie_ścieżka/img/zdjecie.jpg

Dziękuję za odpowiedzi.
nospor
file_get_contents oraz file_put_contents
kielich
Czy mogę dostać jakiś przykład ze zdjęciem questionmark.gif Z góry dziękuje
nospor
Bez przesady... najpierw pobierasz zawartosc przez file_get_contents a potem zapisujesz tam gdzie chcesz przez file_put_contents....
kielich
tak własnie robię
  1. file_put_contents(Yii::app()->session['image'],'plik');


i dostaję
Kod
[<a href='function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: HTTP wrapper does not support writeable connections
Arcioch
No właśnie że tak nie robisz bo gdzie masz funkcję file_get_contents?

Mniej więcej tak wink.gif

  1. $zdjecie = @file_get_contents(Yii::app()->session['image']);
  2. file_put_contents('tu ścieżka gdzie ma zapisać i nazwa zdjęcia z rozszerzeniem', $zdjecie );
kielich
Dziękuje, niby błedy juz nie ma ale zdjęcie się jakby nie zapisywało

Oryginalny link: http://img.gettextbooks.com/pi/8372780129/150/400

a tu kod
  1. $zdjecie = file_get_contents(Yii::app()->session['image']);
  2. file_put_contents($_SERVER['DOCUMENT_ROOT'].'/images/fotka.jpg', $zdjecie );


Jak to rozwiązać ?
nospor
Czy tak cięzko napisać w czym problem?
Nie tworzy się plik, czy tworzy się ale jest pusty?

Cytat
tak własnie robię
I na przyszłość jak ktoś ci mowi ze ma być file_get_contents oraz file_put_contents to weź się trochę bardziej skup i nie pisz ze tak robisz, podczas gdy używasz tylko jednej z funkcji.
kielich
Ale to nadal nie rozwiązuje mojego problemu. Plik się tworzy ale bez obrazu. plik mimo że wazy 1KB to jest "biały"
nospor
No ale zobacz co ci sie w tym pliku znajduje.... edytor tekstu, znasz takie cos?
kielich
są jakieś śmieci , bez różnicy czy zapisze jakoś png czy jpg
nospor
No ale pokaż te śmieci... dokładnie..... ty się nie znasz, ale my może coś z tych śmieci zrozumiemy...
@kielich, jesteś tyle czasu na forum... czy naprawdę wszystko pokolei musimy ci mówić? Zrób to, zrób tamto, a teraz zrób jeszcze coś innego?
kielich
O to śmieci które mam w pliku smile.gif

Kod
˙Ř˙ŕ JFIF  ` `  ˙Ű C 
     
#exclamation.gif!$'$ & ! ˙Ű C                                                   ˙Ŕ   " ˙Ä               
˙Ä µ   } !1AQa"q2‘ˇ#B±ÁRŃđ$3br‚    
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š˘Ł¤Ą¦§¨©Ş˛ł´µ¶·¸ąşÂĂÄĹĆÇČÉĘŇÓÔŐÖ×ŘŮÚáâăäĺćçčéęńňóôőö÷řůú˙Ä            
˙Ä µ  w !1AQaq"2B‘ˇ±Á    #3RđbrŃ
$4á%ń&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š˘Ł¤Ą¦§¨©Ş˛ł´µ¶·¸ąşÂĂÄĹĆÇČÉĘŇÓÔŐÖ×ŘŮÚâăäĺćçčéęňóôőö÷řůú˙Ú    ? řĘŠ( ˙Ů
nospor
Wygląda to na poprawną zawartość pliku jpeg. Jeśli ci nie działa to jest kilka możliwości:
1) Jest jakiś biały znak który wkradł się po drodze
2) Coś innego - trudno akurat muszę wyjść i nie mam czasu domyślać się cóż innego może to być. Ale wcale bym się nie zdziwił, gdybyś ty poprostu źle ten plik otwierał smile.gif
redeemer
Lepiej jak go byś podesłał w postaci binarnej. Widać po nagłówku, że raczej JPEG. A czy popsuty, czy prawidłowy, ale po prostu biały to ciężko powiedzieć. Sprawdź co zawiera Yii::app()->session['image'], sprawdź czy na pewno sprawdzasz plik $_SERVER['DOCUMENT_ROOT'].'/images/fotka.jpg'
kielich
Link wpisałem na sztywno kod wygląda tak

  1. $zdjecie = file_get_contents("http://img.gettextbooks.com/pi/8372780129/150/400");
  2. file_put_contents($_SERVER['DOCUMENT_ROOT'].'/images/fotka.jpg',$zdjecie);


Plik się zapisuje w jego wpłaściwościach jest że ma 6 KB, 1x1 lecz "normalnie" jest on pusty, biały, bez zdjęcia
redeemer
wget zwraca to samo co file_get_contents czyli jpeg 1x1 o rozmiarze 691 bajtów. Spróbuj curlem z jakimś standardowym nagłówkiem imitując przeglądarkę.
kielich
Zrobiłem coś takiego
  1. $c = curl_init();
  2. curl_setopt($c, CURLOPT_URL, 'http://img.gettextbooks.com/pi/8372780129/150/400');
  3. curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
  4. curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
  5.  
  6. $wynik=curl_exec($c);
  7.  
  8. $image = imagecreatefromstring($wynik);
  9. header("Content-Type: image/png");
  10. print_r(imagepng($image));


I dostaje obrazek, lecz nie wiem jak mam go teraz zapisać do pliku , próbowałem file_put_contents lecz wtedy plik jest pusty

ok poradziłem sobie smile.gif) Dziękuje za pomoc
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.