Wojciech Kubiak

Wojciech Kubiak Cloud Unit Leader,
Cybercom Poland Sp.
z o.o.

Temat: Przekierowanie wygenerowanego obrazka do pliku

Witam

Problem jest nastepujacy.
Generuje sobie jakis obrazek w pliku xxx.php za pomoca

xxx.php

$img = imagecreatetruecolor($graf_xy, $graf_xy);
(...)
header("Content-Disposition: attachment; filename=xxx.jpg");
imagejpeg($img);
imagedestroy($img);

W innym pliku, powiedzmy yyy.php zalaczam sobie ten obrazek jako obraz:

yyy.php

echo "<img src=\"xxx.php?k=zmienna1&t=zmienna2\">;

Do tej pory wszystko jest ok i na stronie yyy.php wyswietla sie pieknie obrazek. Moge kliknac prawym klawiszem i wybrac zapisz obraz jako. Wowczas zapisze sie jako xxx.jpg.

Chcialbym uniknac tlumaczenia uzytkownikowi ze musi kliknac prawym klawiszem itp... Dolozylem guziczek "DOWNLOAD" ktory kieruje do strony zzz.php ktora ma postac:

zzz.php

$zmienna1=$_POST['zmienna1'];
$zmienna2=$_POST['zmienna2'];
$link = "xxx.php?k=".$zmienna1."&t=".$zmienna2;
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: no-store, must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: image/jpeg");
header("Content-Disposition: attachment; filename=xxx.jpg");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($link));
@readfile($link);


Niestety nie dziala w ten sposob.
Moze jest jakis inny ...Wojciech Kubiak edytował(a) ten post dnia 26.05.10 o godzinie 13:35

konto usunięte

Temat: Przekierowanie wygenerowanego obrazka do pliku

Po pierwsze dwa razy bez sensu generujesz obrazek. Raz żeby sprawdzić jego rozmiar, drugi raz, żeby go wypluć. Nagłówki masz dobre, bo gdy wstawiam swój plik, to działa. Dopisz cały adres do linka "http://coctam.pl/xxx.php?bleble".
Jak nie zadziała, sprawdź co wypluwa readfile i jaki co daje filesize().
A potem pokaż nalepiej konkretne całe url'e :)
Wojciech Kubiak

Wojciech Kubiak Cloud Unit Leader,
Cybercom Poland Sp.
z o.o.

Temat: Przekierowanie wygenerowanego obrazka do pliku

Problem w tym ze w headerze powinien byc chyba link do pliku ktory bedzie udostepniony do sciagniecia a nie do phpa ktory dopiero "Zamieni" sie w ten plik. Nigdzie na serwerze nie mam zapisanego wygenerowanego w php obrazka.
On jest tylko w zmiennej i wywolanie pliku xxx.php jako <img ... powoduje ze jest on traktowany jako obrazek.

Po zapisaniu tego co wywala przegladarka zamiast obrazka otrzymuje plik xxx.jpg:

<br />
<b>Warning</b>: filesize() [<a href='function.filesize'>function.filesize</a>]: stat failed for xxx.php?k=SUN&t=sdafasdf&header_sent=1 in <b>/home/watcher/public_html/www/test/zzz.php</b> on line <b>14</b><br />
<br />
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/watcher/public_html/sss/test/zzz.php:14) in <b>/home/watcher/public_html/www/test/zzz.php</b> on line <b>14</b><br />
Wojciech Kubiak edytował(a) ten post dnia 26.05.10 o godzinie 15:28
Wojciech Kubiak

Wojciech Kubiak Cloud Unit Leader,
Cybercom Poland Sp.
z o.o.

Temat: Przekierowanie wygenerowanego obrazka do pliku

Działa jak usune filesize i zmienne GET :)

konto usunięte

Temat: Przekierowanie wygenerowanego obrazka do pliku

Wojciech Kubiak:
Problem w tym ze w headerze powinien byc chyba link do pliku ktory bedzie udostepniony do sciagniecia a nie do phpa ktory dopiero "Zamieni" sie w ten plik. Nigdzie na serwerze nie mam zapisanego wygenerowanego w php obrazka.
On jest tylko w zmiennej i wywolanie pliku xxx.php jako <img
>
... powoduje ze jest on traktowany jako obrazek.

Po zapisaniu tego co wywala przegladarka zamiast obrazka otrzymuje plik xxx.jpg:

Podałeś ścieżkę jako url?
$link = "http://costamcostam.pl/xxx.php?k=".$zmienna1."&t=".$zmienna2;


Jeżeli masz włączone allow_url_fopen to powinno zadziałać. Tylko musisz podać protokół, bo wtedy ten request dopiero zostanie przeparsowany (zostanie zwrócona jakaś zawartość i obliczony jej rozmiar).

Bez podania protokołu próbujesz po prostu odczytać z dysku ten plik, który nie przelatuje przez parser php.

Ale tak jak wspominasz wcześniej - najlepiej takie rzeczy wpierw sobie przeparsować, zapisać na dysk i wypluć userowi i usunąć.Peter K. edytował(a) ten post dnia 26.05.10 o godzinie 17:06

konto usunięte

Temat: Przekierowanie wygenerowanego obrazka do pliku

no wlasnie, moze tak troszke dookoła?
zapisac plik i wtedy headerem zapodać userowi do sciagniecia?
Wojciech Kubiak

Wojciech Kubiak Cloud Unit Leader,
Cybercom Poland Sp.
z o.o.

Temat: Przekierowanie wygenerowanego obrazka do pliku

A jak jednoczesnie 100 000 userow odwiedzi strone ?
Takie zapisywanie tymczasowe na dysku to nie jest dobre rozwiazanie.
To tak jakbym zamiast uzywac ciasteczek zapisywal sobie potrzebne rzeczy w pliku tekstowym na serwerze :)
Nie ma róznicy dopoki nie uzywa serwisu w danej chwili wiecej niz 1 osoba.
Wojciech Kubiak

Wojciech Kubiak Cloud Unit Leader,
Cybercom Poland Sp.
z o.o.

Temat: Przekierowanie wygenerowanego obrazka do pliku

.Wojciech Kubiak edytował(a) ten post dnia 27.05.10 o godzinie 14:31
Wojciech Kubiak

Wojciech Kubiak Cloud Unit Leader,
Cybercom Poland Sp.
z o.o.

Temat: Przekierowanie wygenerowanego obrazka do pliku

udało się :)Wojciech Kubiak edytował(a) ten post dnia 27.05.10 o godzinie 14:32

Następna dyskusja:

Animowany gif do wygenerowa...




Wyślij zaproszenie do