POST, wysłanie pliku na Imgur

0

Zgodnie z http://api.imgur.com/endpoints/image#image-upload chcę wysłać plik. W "zwrocie" mam otrzymać ID. Pytanie brzmi: w jaki sposób to zrobić, tzn. jak wysłać na daną stronę plik metodą POST?

0

Albo poczytać specyfikację HTTP, stracić trochę życia, ale ostatecznie coś wydumać fajnego, albo używać ubogiego cURL-a do tego: http://ariejan.net/2010/06/07/uploading-files-with-curl/

Albo znaleźć lepszą bibliotekę.

edit: linka Ci widzę słabego podałem, Googluj "upload file curl php".

edit: metodą GET nie da się wysłać pliku i tak (wiem, są inne metody, mało o nich jednak słychać, więc raczej wszystko będzie o POST)

0

curl jest słabą biblioteką i czasem właśnie nie wysyła pliku tylko właśnie taki adres z małpą - powtórz zapytanie do własnego serwera i zobacz czy ten plik się wysyła w ogóle. pewnie nie. więc znajdź sobie lepszą bibliotekę ("uplading files php without curl", albo podobne hasła, albo od razu szukaj na phpclasses.org)

0

Wziąłem kod stąd: http://dtbaker.net/web-development/uploading-a-file-using-curl-in-php/ ale nie zwraca mi ID.

A co zwraca? Podejrzewam, że "error":"Authentication required"...

0

Żal mi serce ściska, gdy muszę prosić o gotowca. Próbowałem CURL na kilka sposobów (próbowałem wysłać plik, adres do pliku) i nie otrzymuję ID. Korzystałem z zewnętrznych bibliotek korzystających/nie korzystających z CURLa i za każdym razem dostawałem całą gamę błędów wyglądających na błąd autorów (aż dziwne...). Po prostu nie mogę już myśleć, więc błagam o kod - gotowiec, który wreszcie zadziała...

1
ShookTea napisał(a):

Żal mi serce ściska, gdy muszę prosić o gotowca

smutne - pierwszy kod z google poprawiony żeby odpowiadał wymaganiom API:

<pre><?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, 'https://api.imgur.com/3/image');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, Array('Authorization: Client-ID XXXXXXXXXXXXXXX'));

    $post = array(
        "image"=>"@plik.jpg",
    );
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
    $response = json_decode(curl_exec($ch));

    var_dump($response);

zwraca:

object(stdClass)#1 (3) {
  ["data"]=>
  object(stdClass)#2 (3) {
    ["id"]=>
    string(7) "Pj7vUyI"
    ["deletehash"]=>
    string(15) "pYJUKTc3rSKxppS"
    ["link"]=>
    string(30) "http://i.imgur.com/Pj7vUyI.jpg"
  }
  ["success"]=>
  bool(true)
  ["status"]=>
  int(200)
}

nie wiem w czym problem

BTW

ShookTea napisał(a) 60 min. temu:

WTF? (po minucie zmieniło się na "1 godz. temu")

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