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?
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)
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)
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"...
Ż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...
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")