Closed Daniel820 closed 5 years ago
Cześć,
zasób images wkrótce znajdzie się w dokumentacji, tymczasem więcej na ten temat możesz przeczytać w tutorialu.
Sprawdziłem poprawnośc działania zarówno na allegro, jak i na sandboxie, jest okej. Przeczytaj nasz tutorial i zwróć uwagę, czy uderzasz na prawidłowy adres: https://api.allegro.pl.allegrosandbox.pl/sale/images poprawka- https://upload.allegro.pl.allegrosandbox.pl/sale/images
Zła forma nagłówka HTTP:
'content-type: "image/png","image/jpg","image/jpeg","image/gif","text/plain"',
Wybierz jeden typ bez "ciapek" i na pewno nie ostatni
Ja również dostaję za każdym razem 415 po próbie uploadu na https://upload.allegro.pl/sale/images bez względu czy puszczam jpg, czy png. Obrazki zgodne z wytycznymi (600x600px), przechodzą normalnie przez ms.allegro.pl content-type generowane dynamicznie. Mój nagłówek requestu dla jpg: POST /sale/images HTTP/1.1 Host: upload.allegro.pl accept-language: pl-PL Authorization: Bearer {token} Accept: application/vnd.allegro.beta.v1+json Content-Length: 112942 Expect: 100-continue Content-Type: image/jpeg; boundary=------------------------1efb9b92d8022fbb
Udało się napisać działający kod dzięki wskazówce kormichu `public function test(){ if (function_exists('curl_file_create')) { // php 5.5+ $cFile = curl_file_create('./uploads/products/37/135/a7762f18a5ffdc6f18298c82293e5511.png','image/png','test_name'); }
$image = "./uploads/products/37/135/a7762f18a5ffdc6f18298c82293e5511.png"; // be careful that the path is correct
$datab = file_get_contents($image);
$post = $datab;
$headers = array(
"accept: application/vnd.allegro.beta.v1+json",
"Authorization: Bearer {$this->token()}",
'content-type: image/png',
'accept-language: pl-PL'
);
//$post = array('binary-data' => $cFile);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->upload_link.'sale/images');
curl_setopt($ch, CURLOPT_POST, 1);
//curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
echo json_encode($result);
if (curl_errno($ch)) {
print curl_error($ch);
}
//$info = curl_getinfo($ch);
//echo json_encode($info) . '<br>';
echo curl_getinfo($ch, CURLINFO_HTTP_CODE) . '<br>';
//echo json_encode($result);
die();
curl_close($ch);
}`
Próbuje z pythona3 zrobić to samo, czyli upload obrazka
plik = open('test.jpg', 'rb') -> tylko po to żeby sprawdzić że test.jpg jest dostępny
response = requests.post(url='https://upload.allegro.pl/sale/images',
data=open('test.jpg', 'rb'),
headers={'Content-Type': 'image/jpg', 'Authorization': "Bearer {}".format(accessToken),
'Accept': 'application/vnd.allegro.public.v1+json', 'Accept-Language': 'pl-PL'})
print(response.json())
w odpowiedzi dostaje:
{'errors': [{'code': 'NotSupportedException', 'message': 'An error has occurred', 'details': None, 'path': None, 'userMessage': 'An error occurred'}]}
Nie ma sensownego błędu więc ciężko wywnioskować jaka jest przyczyna.
Hej z tego co nagłówek masz błędny zmień jpg na jpeg :-) i będzie śmigać. Dokładny opis tej metody znajdziesz w tym poradniku.
W tym wątku nie pojawiła się żadna nowa odpowiedź w ciągu 30 dni. Dlatego automatycznie oznaczamy go jako przeterminowany. Jeśli w ciągu 7 dni nie pojawi się żadna odpowiedź, zamkniemy ten wątek. Dziękujemy za zaangażowanie w dyskusję.
Cześć,
zasób images wkrótce znajdzie się w dokumentacji, tymczasem więcej na ten temat możesz przeczytać w tutorialu.
Sprawdziłem poprawnośc działania zarówno na allegro, jak i na sandboxie, jest okej. Przeczytaj nasz tutorial i zwróć uwagę, czy uderzasz na prawidłowy adres: https://api.allegro.pl.allegrosandbox.pl/sale/images poprawka- https://upload.allegro.pl.allegrosandbox.pl/sale/images
@KrzysztofLukanowski Cześć,
Hej z tego co nagłówek masz błędny zmień jpg na jpeg :-) i będzie śmigać. Dokładny opis tej metody znajdziesz w tym poradniku.
@PawelTaberski
Panowie z Allegro, może w końcu postaracie się o porządny opis oraz zabezpieczenia wewnątrz własnego kodu z odpowiednimi komunikatami, bo z takimi bylejakimi komunikatami od was nie da się pracować, przykład poniżej:
{"errors":[{"code":"ERROR","message":"An error has occurred","details":null,"path":"/sale/images","userMessage":null}]}
PS: Jeśli upieracie się, że u Was działa, tzn że macie zrobione niezgodnie z tym "dokładnym opisem", więc jak?
@Qenozis Przetestowałem jeszcze przed sekundą. Wszystko znajduje się w naszej dokumentacji. Przy opisach zasobów nie podajemy za każdym razem adresu wywołania na środowisku testowym i produkcji. Pokazujemy przykładowe użycie tylko na produkcji.
Opis tego zasobu tak jak podlinkowałeś znajduje się tutaj.
Natomiast adresy do środowiska testowego znajdziesz tutaj.
W przypadku tego zasobu prawidłowy adres wywołania to:
https://upload.allegro.pl.allegrosandbox.pl/sale/images
Przykładowe wywołanie:
curl -X POST \ https://upload.allegro.pl.allegrosandbox.pl/sale/images \ -H 'Authorization: Bearer tu wklej token' \ -H 'accept: application/vnd.allegro.public.v1+json' \ -H 'content-type: image/png'
@PawelTaberski Tak robię jak opisałeś, a w wyniku dostaję nic poza komunikatem błędu (również sprawdzane przed sekundą): status 0, nr błędu 26, treść błędu: couldn't open file "tutaj adres zdjęcia", adres sprawdzałem - działa poprawnie. Skoro robię wszystko dobrze, to dlaczego po stronie Allegro działa źle?
Żeby nie było dziwnych podejrzeń to wywołuję URL: https://upload.allegro.pl.allegrosandbox.pl/sale/images PS: adres podanego w wywołaniu zdjęcia nie jest z localhosta, jest na 100% prawidłowy. Uzupełniając - w headerach wysyłam tylko:
Podeślij proszę przez nasz formularz kontaktowy pełnego cURL-a z responsem z błędem i trace ID dodatkowo dodaj clientID sprawdzimy w czym jest problem z Twoimi requestami. W zgłoszeniu zaznacz, że informacje są potrzebne do ticketa numer 293 na GitHub-ie.
@PawelTaberski przed chwilą wysłałem poprzez formularz kontaktowy kod PHP, którym testuję wgrywanie zdjęć na Sandbox, z zaznaczeniem, że dotyczy ticketa numer 293 na GitHub-ie. Zaznaczyłem tam również drugi adres do zdjęcia, który również nie chce zadziałać.
O dziwo... przed chwilą zadziałał mi sposób z załadowaniem zawartości zdjęcia funkcją file_get_contents od razu do parametru "CURLOPT_POSTFIELDS" (wyżej jest skrypt z tym sposobem napisany przez @Daniel820 ). Wczoraj nie chciało działać! Próbowałem wielokrotnie. Coś zostało poprawione po stronie Sandboxa? Bo u mnie na pewno nic się nie zmieniło w kodzie.
@Qenozis W oryginalnym kodzie @Daniel820 był problem z content-type, dlatego mogło Tobie nie działać. Odnośnie Twojego requesta nie ma możliwości przesłania bezpośrednio z neta grafiki, musisz ją najpierw zaciągnąć lokalnie np funkcją file_get_contents. Co do konkretnej grafiki musisz sobie jakoś ją nadpisywać, bądź zmieniać jej typ, że u nas na końcu nie jest uznawana za dozwolone rozszerzenie. Pobrałem testowo Twoją grafikę i bez problemu wysyła się na nasz serwer. Sprawdź, czy po drodze nie zmieniasz gdzieś rozszerzenia i czy na pewno na serwerze masz tak zapisaną ta grafikę. Jeśli jesteś pewny, że nigdzie nic nie nadpisujesz podaj proszę trace-id takiego sprawdzimy co się dzieje z tym responsem.
@PawelTaberski Narazie wyżej wspomniane rozwiązane, które mi zadziałało - wciąż działa, więc tak to zostawię. Inne metody, które zgłosiłem przez formularz, wypróbowałem tylko dlatego, że ta nie chciała zadziałać, a wyglądały one na bliskie opisowi tego zasobu.
PS: proszę o aktywację konta na Sandboxie o nazwie -INTGL-, bo nie mogę opublikować aukcji, a ta aktywacja samodzielna na Sandboxie czasami wyrzuca tylko error albo nic nie robi :/
@Qenozis Wstępnie zaakceptowałem Twoje konto, a by w pełni aktywować konto firma przejdź do zakładki moje konto i wyślij do nas we wniosku jakieś dowolne 2 pliki.
Automatycznie zamknęliśmy wątek, ponieważ nie otrzymaliśmy niezbędnych danych. Jeśli problem nadal występuje, to wznów wątek i prześlij do nas informacje, o które prosiliśmy.
Mam nadzieję że nie jest za późno, ale mam taki problem, że jak dodaję do jakiego kolwiek drafta zdjęcia, to nie ma ich później w sandbox, gdyż robię tak, że dodaję przez api nazwę produktu, opis (w nim również zdjęcia) i zdjęcia, natomiast jak chcę dokończyć kilka minut później produk, to już nie ma tych zdjęć w sandbox, czy można prosić o pomoc?
Przy każdym przesłanym zdjęciu dostajesz również informacje kiedy usuniemy dane zdjęcie jeśli nie zostanie użyte, czy sprawdzałeś te czasy?
Tak, te czasy są dużo dłuższe, ja to robię dosłownie kilka minut po, co ciekawsze, jak wybieram którego drafta chcę edytować, to tam jest zdjęcie, tylko później po wyborze kategorii już brak.
Przetestowałem i dodawanie zdjęć jak i później wystawienie ofert z tymi zdjęciami działa poprawnie. Nie bardzo rozumiem co dokładnie robisz i czy wszystkie czynności wykonujesz po API. Rozumiem, że najpierw dodajesz zdjęcie zasobem POST /sale/images, potem tworzysz draft POST /sale/offers i uzupełniasz go PUT /sale/offers/{offerId}, a nastepnie aktywujesz ofertę. I w którym momencie dokładnie zauważasz błąd i jaki dostajesz komunikat?
Dokładnie rzecz biorąc robię coś takiego:
Chyba cały flow.
Czy problem dalej u Ciebie występuje bo zrobiłem tak jak napisałeś i bez problemu mogę zmieniać kategorie, a opis i zdjęcia pozostają bez zmian. Próbowałeś na innej przeglądarce.
Dzień dobry. Próbuje przesłać curlem zdjęcie typu gif na produkcji na adres https://upload.allegro.pl/sale/images
z nagłówkami -H "Accept: application/vnd.allegro.public.v1+json" -H "Content-Type: image/gif" -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJle...." -H "Accept-Language: pl-PL"
zarówno sposobem który przyjmuje url "https://polotent.pl/uploads/boxes/dynamic/namioty_handlowe_magazynowe_kurtyna_600.gif"
jak i sposobem wysłania wersji binarnej z lokala opisany przez Daniel820 zwraca następujący błąd.
Niedozwolony typ zdjęcia. 415 UNSUPPORTED_MEDIA_TYPE/
Pragnę też zaznaczyć że przy próbie wysłania png i zmianie Content type na image/png wszystko działa poprawnie.
Pytanie brzmi czy w obecnej chwili wysyłanie gifów jest możliwe i jeśli tak to co muszę ustawić w nagłówkach lub w request aby wysłać gifa?
@Agrrr2001 Otrzymujesz taki błąd, ponieważ nie przyjmujemy plików typu gif. Zaktualizowaliśmy dokumentację w tym temacie.
A czy ręcznie się da dodać do aukcji gifa, poniewarz znalazłem aukcje na której taki gif się znajduje. https://allegro.pl/oferta/okragly-gramofon-na-korbe-dab-2-plyty-uk-8409968829?fbclid=IwAR3Qy73W3NmDg1Lra_QVnEF23K98JkTMQZhZe77YmnKeaIjkHYGy5QMUhto sam gif: https://a.allegroimg.com/s128/01ae42/6202d2f64cb0a566ab2a56b60c4e/OKRAGLY-gramofon-na-korbe-DAB-2-plyty-UK
Ręcznie przez formularz również nie da się dodać gifa. Przywołany przez Ciebie obrazek prawdopodobnie został przesłany na nasze serwery, kiedy udostępnialiśmy możliwość wysyłania plików tego typu.
Ręcznie przez formularz również nie da się dodać gifa. Przywołany przez Ciebie obrazek prawdopodobnie został przesłany na nasze serwery, kiedy udostępnialiśmy możliwość wysyłania plików tego typu.
Przemysław minęły 2 lata od ostatniej odpowiedzi w tym wątku. Może się coś zmieniło ? idzie łatwiej dodać takie zdjęcie na allegro w miniaturze? bo dla mnie te kody to czarna magia...
@porterpce Sytuacja się nie zmieniła - nadal nie wspieramy obrazków w formacie gif.
Dziękuje bardzo za odpowiedz. Czytałem cały ten wątek na githubie ale tam to jest dla mnie dalej czarną magią dodawanie tego gifu... Próbowałem podmieniać zdjęcia w aukcji za pomocą platformy shoper ale nie łudziłem się że to będzie działać i efekt końcowy oczywiście taki że to nie działa bo błąd wyskakuje . Ma Pan jakiś pomysł łatwiejszy jakby można było to dodawać?Temat: Re: [allegro/allegro-api] Dodawanie zdjęcia rest api (#293)Data: 2021-10-13 8:15Nadawca: "PrzemyslawLukanowski" Adresat: "allegro/allegro-api" ; DW: "porterpce" ; "Mention" ;
@porterpce Sytuacja się nie zmieniła - nadal nie wspieramy obrazków w formacie gif.
—You are receiving this because you were mentioned.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.
Jak wspomniałem wyżej - nie obsługujemy plików gif, dlatego błędy będą pojawiać się za każdym razem przy próbie wgrania obrazka takiego typu.
Tak tak wiem jakie są wymagania w dodawaniu zdjęć w allegro ale jakimś sposobem tutaj w tej aukcji widzę że jest zdjęcie podmienione na gif który się obraca. https://allegro.pl/oferta/gramofon-z-glosnikami-winyl-klasyka-gratis-lp-8779775221I właśnie tak mnie to zaintrygowało że zrobiłem wczoraj na szybko jednego gifa i kombinuje czym i jak go dodać żeby to tak śmigałoTemat: Re: [allegro/allegro-api] Dodawanie zdjęcia rest api (#293)Data: 2021-10-13 14:58Nadawca: "PrzemyslawLukanowski" Adresat: "allegro/allegro-api" ; DW: "porterpce" ; "Mention" ;
Jak wspomniałem wyżej - nie obsługujemy plików gif, dlatego błędy będą pojawiać się za każdym razem przy próbie wgrania obrazka takiego typu.
—You are receiving this because you were mentioned.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.
Rozumiem, wspomniana oferta została wystawiona w okresie, gdy jeszcze przyjmowaliśmy pliki gif. Aktualnie jest to niemożliwe.
A to dziękuje bardzo za odpowiedź pozdrawiam PatrykTemat: Re: [allegro/allegro-api] Dodawanie zdjęcia rest api (#293)Data: 2021-10-13 15:03Nadawca: "PrzemyslawLukanowski" Adresat: "allegro/allegro-api" ; DW: "porterpce" ; "Mention" ;
Rozumiem, wspomniana oferta została wystawiona w okresie, gdy jeszcze przyjmowaliśmy pliki gif. Aktualnie jest to niemożliwe.
—You are receiving this because you were mentioned.Reply to this email directly, view it on GitHub, or unsubscribe.Triage notifications on the go with GitHub Mobile for iOS or Android.
Od kilku dni próbuję dodać zdjęcie za pomocą rest api. Rozwiązanie próbuję zaimplementować w moim autorskim cmsie napisanym w php. Do przesyłania danych wykorzystuję curl. Próbowałem na wiele sposobów przesłać mój plik zdjęcia .png 800x800px, próbowałem go kompresować przesyłać binarnie.
Nie znalazłem w dokumentacji punktu sale/images
Zawsze dostaję 415 co by wskazywało na nieprawidłowość pliku działam na $this->upload_link = 'https://upload.allegro.pl.allegrosandbox.pl/';
Moja ostatnia próba zakończona niepowodzeniem 415 ` $image = "./uploads/products/37/135/a7762f18a5ffdc6f18298c82293e5511.png"; // be careful that the path is correct $datab = file_get_contents($image); $post = $datab; $headers = array( "accept: application/vnd.allegro.beta.v1+json", "Authorization: Bearer {$this->token()}", 'content-type: "image/png","image/jpg","image/jpeg","image/gif","text/plain"', 'accept-language: pl-PL' );
Jak zmodyfikować kod aby to w końcu zadziałało, lub co powinienem zrobić?