Napisany przez: Octobus 14.06.2018, 09:19:26
Witam,
pisze obsluge allegro api i stanalem na wysylaniu pliku metoda binarna do allegro. Taki jest ich przyklad:
Kod
curl -X POST \
'https://upload.allegro.pl/sale/images
-H 'authorization: Bearer {token}' \
-H 'accept: application/vnd.allegro.beta.v1+json’ \
-H 'content-type: "image/jpeg", "image/png", albo "image/gif”’ \
-H ‘accept-language: pl-PL’, (albo en-EN) \
--data-binary "@file_to_upload.png" -- wymagane, zawartość pliku z
obrazkiem w postaci binarnej
Wiec dalem
Kod
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://upload.'.$dane['host_allegro'].'/sale/images');
curl_setopt($ch, CURLOPT_POST, 1 );
curl_setopt($ch, CURLOPT_HEADER, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS, array(
'file' => '@obrazek.jpg',
));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer '.$dane['token'].'',
'accept: application/vnd.allegro.beta.v1+json',
'content-type: "image/jpeg"',
'accept-language: pl-PL',
));
$postResult = curl_exec($ch);
curl_close($ch);
print_r($postResult);
Za kazdym razem jaka nie wpisze sciezke mam komunikat HTTP 415 Unsupported Media Type. Podejrzewam ze cos zle robie ale od godziny nie moge tego znalezc. Moze pole 'file' w POST powinno sie inaczej nazywac ? Moze podaje zla sciezke (plik ktory wywoluje i plik obrazka sa w tym samym folderze). Probowalem roznych obrazkow ale wszystko zwraca ten sam blad ...
Napisany przez: nospor 14.06.2018, 09:31:43
Pewnie slepne na starosc ale gdzie ty w tym kodzie wysylasz obrazek? Nazwe obrazka to widze ze wysylasz ale gdzie wysylasz obrazek?
Napisany przez: Octobus 14.06.2018, 10:46:21
jak w takim razie powinno to wygladac w POST ? Dalem
Kod
'file' => file_get_contents('obrazek.jpg'),
oraz probowalem
Kod
'file' => '@'.file_get_contents('obrazek.jpg'),
i nic sie nie zmienilo :/
Napisany przez: SmokAnalog 14.06.2018, 11:24:42
Nazwa pliku musi być pełną ścieżką:
curl_setopt($ch, CURLOPT_POSTFIELDS, http://www.php.net/array(
'file' => '@' . http://www.php.net/realpath('obrazek.jpg'),
));
Napisany przez: Octobus 14.06.2018, 11:48:22
ok juz wiem, jakby ktos szukal to tam trzeba bylo przeslac sam plik w post
Kod
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents('obrazek.jpg'));
oraz w header ustawic content-type bez apostrofow:
Kod
'content-type: image/jpeg'
Mimo wszystko dzieki, naprowadziliscie mnie. Pozdrawiam
Napisany przez: SmokAnalog 14.06.2018, 12:00:46
Hmm, tak się nie przesyła zwykle plików CURL-em, to jest bardzo niewydajny sposób. Ta biblioteka jest zoptymalizowana dla przesyłania plików właśnie po nazwie, więc powinno działać. Jak przekazujesz tam zawartość pliku na pałę, to cały plik jest rzucany w tę i we w tę w pamięci.
Napisany przez: Octobus 14.06.2018, 12:12:40
tez bylem zaskoczony, dla tego nie moglem dojsc do tego ale teraz dziala. Allegro tak u siebie ma w api
Napisany przez: nospor 14.06.2018, 12:27:59
A probowales tak:
curl_setopt($ch, CURLOPT_POSTFIELDS, '@' . realpath('obrazek.jpg'));
?
Napisany przez: batman 15.06.2018, 05:23:18
Od wersji php 5.5 zmianie uległ sposób wysyłania plików przy pomocy curl. Symbol @ zniknął, a w jego miejsce pojawiła się klasa https://secure.php.net/manual/en/class.curlfile.php. W google znajdziesz przykłady użycia.