Я планирую загружать изображения, чтобы анонимно использовать их api, я зарегистрировал свое приложение в категории анонимной загрузки и получил идентификатор клиента и клиентский секрет. Как использовать php для загрузки изображения для imgur и получения прямого URL-изображения? может ли кто-нибудь предлагать ссылки на любой пример? это то, что я пытался сделать, но я получаю сообщение об ошибке «Неустранимая ошибка: превышено максимальное время выполнения 30 секунд»,
<?php $client_id = :client_id; //put your api key here $filename = "images/q401x74ua3402.jpg"; $handle = fopen($filename, "r"); $data = fread($handle, filesize($filename)); //$data is file data $pvars = array('image' => base64_encode($data), 'key' => $client_id); $timeout = 30; $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, 'https://api.imgur.com/3/upload.json'); curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $pvars); $xml = curl_exec($curl); $xmlsimple = new SimpleXMLElement($xml); echo '<img height="180" src="'; echo $xmlsimple->links->original; echo '">'; curl_close ($curl); ?>
client_id
с client_id
в переменной post. Его необходимо отправить в заголовок запроса. Кроме того, вы запрашиваете ответ JSON, но пытаетесь проанализировать его как XML.
<?php $client_id = "FILLMEIN"; $image = file_get_contents("img/cool.jpg"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://api.imgur.com/3/image.json'); curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Client-ID ' . $client_id)); curl_setopt($ch, CURLOPT_POSTFIELDS, array('image' => base64_encode($image))); $reply = curl_exec($ch); curl_close($ch); $reply = json_decode($reply); printf('<img height="180" src="%s" >', $reply->data->link);
обновление 1
Живой функциональный пример с источником и на основе этого кода с отладочным результатом.
нашел ошибку, мне нужно отправить данные авторизации в виде заголовка, например код
<?php $client_id = 'xxxxxxxx'; $file = file_get_contents("test-image.png"); $url = 'https://api.imgur.com/3/image.json'; $headers = array("Authorization: Client-ID $client_id"); $pvars = array('image' => base64_encode($file)); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL=> $url, CURLOPT_TIMEOUT => 30, CURLOPT_POST => 1, CURLOPT_RETURNTRANSFER => 1, CURLOPT_HTTPHEADER => $headers, CURLOPT_POSTFIELDS => $pvars )); $json_returned = curl_exec($curl); // blank response echo "Result: " . $json_returned ; curl_close ($curl); ?>
Если у вас возникли проблемы с вышеуказанным скриптом, попробуйте проверить скручивание SSL таким образом:
curl_setopt ($ ch, CURLOPT_SSL_VERIFYPEER, false);