[PHP] wysylanie plikow przez curl w postaci binarnej |
[PHP] wysylanie plikow przez curl w postaci binarnej |
14.06.2018, 09:19:26
Post
#1
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 1 Dołączył: 3.07.2011 Ostrzeżenie: (0%) |
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 ... |
|
|
14.06.2018, 09:31:43
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 446 Pomógł: 6292 Dołączył: 27.12.2004 |
Pewnie slepne na starosc ale gdzie ty w tym kodzie wysylasz obrazek? Nazwe obrazka to widze ze wysylasz ale gdzie wysylasz obrazek?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
14.06.2018, 10:46:21
Post
#3
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 1 Dołączył: 3.07.2011 Ostrzeżenie: (0%) |
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 :/ Ten post edytował Octobus 14.06.2018, 10:50:53 |
|
|
14.06.2018, 11:24:42
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
|
|
|
14.06.2018, 11:48:22
Post
#5
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 1 Dołączył: 3.07.2011 Ostrzeżenie: (0%) |
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 Ten post edytował Octobus 14.06.2018, 11:48:42 |
|
|
14.06.2018, 12:00:46
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
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.
Ten post edytował SmokAnalog 14.06.2018, 12:02:14 |
|
|
14.06.2018, 12:12:40
Post
#7
|
|
Grupa: Zarejestrowani Postów: 259 Pomógł: 1 Dołączył: 3.07.2011 Ostrzeżenie: (0%) |
tez bylem zaskoczony, dla tego nie moglem dojsc do tego ale teraz dziala. Allegro tak u siebie ma w api
|
|
|
14.06.2018, 12:27:59
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 446 Pomógł: 6292 Dołączył: 27.12.2004 |
A probowales tak:
curl_setopt($ch, CURLOPT_POSTFIELDS, '@' . realpath('obrazek.jpg')); ? -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
15.06.2018, 05:23:18
Post
#9
|
|
Grupa: Moderatorzy Postów: 2 921 Pomógł: 269 Dołączył: 11.08.2005 Skąd: 127.0.0.1 |
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 CURLFile. W google znajdziesz przykłady użycia.
-------------------- I would love to change the world, but they won't give me the source code.
My software never has bugs. It just develops random features. |
|
|
Wersja Lo-Fi | Aktualny czas: 18.04.2024 - 11:46 |