base64_decode i zapis do pliku

0

Witam,
mam mały problem. Próbuję na wszelkie sposoby zakodowany string base64 odkodować i albo wyświetlić na stronie, albo zapisać do pliku. Kod zdjęcia w załączniku.

Jak robię zwyczajnie:

echo base64_decode($data);

to nic się nie dzieje, tak samo jak dam:

header("Content-type: image/jpeg");
echo '<img src="data:image/jpeg;base64,'.$data.'" />';

lub:

header("Content-type: image/jpeg");
echo '<img src="data:image/jpeg;base64,'.base64_decode($data).'" />';

Bardzo proszę o pomoc.

0

to co masz w pliku to nie jest base64. nie jest to też jpeg, bo żadna przeglądarka na moim kompie nie potrafi tego otworzyć.

0

To jest plik tekstowy - otwórz w notepad++.

Otomoto mi w ten sposób przekazuje zawartość i napisane jest że to base64. Popatrz na punkt 4.6 i 4.12:
http://static-img.otomoto.pl/main/default/docs/otoMoto_webApi_dealer_pl.pdf?1352188752

Oraz tutaj w getInsertionPhoto: http://webapi.otomoto.pl/server.php
Daje parametry:
photo-size NORMAL
result-type FILE

Choć nie wiem czy nie prościej będzie pobierać link i kopiować zdjęcia na server. Ale mimo to proszę o pomoc.

0

jeśli masz w pliku żywcem napisy pochodzące z pliku źródłowego (vide JFIF), to nie jest to zakodowany plik. base64 zwraca znaki z zakresu 0-9 A-z + /, a w pliku który podałeś jest zupełnie inny zestaw (-> http://en.wikipedia.org/wiki/Base64).

spojrzałem też do dokumentacji api, i jak byk stoi: result-type - type of returned value:

LINK - URL
FILE - **binary file**

ani słowa o base64. podejrzewam, że plik nie otwiera się prawidłowo, bo traktujesz go przy zapisywaniu jako plik tekstowy, a to jest plik binarny.

howgh.

0

Rozumiem i już wiem gdzie mam błąd. Zamiast:

$dst = fopen('binary.jpg', 'w');
fwrite($dst, base64_decode($data));
fclose($dst);

mam mieć:

$dst = fopen('binary.jpg', 'w');
fwrite($dst, $data);
fclose($dst);

1 użytkowników online, w tym zalogowanych: 0, gości: 1