В настоящее время наш API позволяет загружать изображения только в качестве гостя. Скоро будет доступна новая версия API, в которой будет реализовано кроме стандартной функции upload, еще и загрузка upload под определенным пользователем с паролем и функции работы с картинками и альбомами: изменение информации о картинке, создание альбома, удаление альбома, изменение альбома, перенос в другой альбом, удаление картинки. (данный функционал уже тестируется в бета режиме по запросу можем предоставить новые функции API)
API вызовы
API работает с POST и GET запросами, но предпочтительным методом является POST.
URL-адрес запроса
https://photosp.ru/api/1/(action)/ (если это не сработает, попробуйте удалить слеш ‘/’ в конце)
Параметры
key — ключ* (получить его можно по запросу здесь).
action — то что вы хотите сделать, значение по умолчанию: [values: upload].
source — источник картинки: может быть base64 кодом картинки, файлом или URL.
format — формат ответа: json (используется по умолчанию), redirect, txt.
4 API Вконтакте и Python 3: загружаем фото в альбом группы
Пример Вызова
Ответ API
Ответы будут варьироваться в зависимости от формата параметра:
json — будет отображать все изображения и подробные данные в формате json. [по умолчанию]
txt — возвращает изображение прямой URL на текст/обычный формат.
redirect — перенаправляет на URL-адрес изображения посетителя.
При использовании json ответ будет иметь заголовки коды статуса, чтобы позволить вам легко понять, запрос был корректный или нет.
status_code и status_txt
Источник: photosp.ru
Как правильно загружать картинки через VK API на PHP?
Доброго времени суток, знатаки.
Уже 3 ночи мучаюсь с этим вопросом. Думал смогу сам, не смог.
Решил скрипт загрузки написать отдельным кодом, чтобы уже точно не путаться.
Перепробовал много способов из гугла. Ничего не помогает(
есть такой код
‘; $url = $json[‘response’][‘upload_url’]; $lala = dirname(__FILE__).»/image.jpg»; $cfile = curl_file_create($lala,’image/jpeg’,’image1.jpg’); $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_USERAGENT, «Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2» ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); curl_setopt($ch, CURLOPT_POSTFIELDS, array(«file1» => $cfile)); $response = curl_exec( $ch ); curl_close( $ch ); $json = json_decode($response, true); var_dump($json); echo ‘
‘; $url = ‘https://api.vk.com/method/photos.saveWallPhoto?access_token=’ . $token . ‘photo=’ . $json[ ‘photo’ ] . ‘ $ch = curl_init( $url ); curl_setopt( $ch, CURLOPT_USERAGENT, «Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2» ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $ch, CURLOPT_SSL_VERIFYHOST, false ); curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false ); $response = curl_exec( $ch ); curl_close( $ch ); $json = json_decode($response, true); var_dump($json); echo ‘
Python API VKontakte!! Как скачать фотографии из ВК через API?
‘; ?>
в ответ получаю:
array(1) < [«response»]=>array(3) < [«upload_url»]=>string(189) «https://pu.vk.com/c626420/upload.php?act=do_addaid=-14hash=8c791b973c407226faa94e4d674e5897swfupload=1wallphoto=1» [«aid»]=> int(-14) [«mid»]=> int(63304746) > > array(3) < [«server»]=>int(626420) [«photo»]=> string(536) «[]» [«hash»]=> string(32) «062c80b517bea2666f2fd02df25ea9d0» > array(1) < [«error»]=>array(3) < [«error_code»]=>int(121) [«error_msg»]=> string(12) «Invalid hash» [«request_params»]=> array(5) < [0]=>array(2) < [«key»]=>string(5) «oauth» [«value»]=> string(1) «1» > [1]=> array(2) < [«key»]=>string(6) «method» [«value»]=> string(20) «photos.saveWallPhoto» > [2]=> array(2) < [«key»]=>string(6) «server» [«value»]=> string(6) «626420» > [3]=> array(2) < [«key»]=>string(5) «photo» [«value»]=> string(536) «[]» > [4]=> array(2) < [«key»]=>string(4) «hash» [«value»]=> string(32) «062c80b517bea2666f2fd02df25ea9d0» > > > >
как решить проблему?(
- Вопрос задан более трёх лет назад
- 6795 просмотров
Источник: qna.habr.com
Как по REST API WordPress загрузить изображение в медиа менеджер
Здравствуйте. В сегодняшней статье, мы рассмотрим загрузку изображений в media manager Вордпресс посредством API, с использованием его core функций.
Сегодня мы немного усложним себе задачу путем использования крона. Т.к. наш код должен будет выполняться по крону с периодичностью в 10 сек.
Приступим. Первым делом создадим кастомный временной диапазон через который будет срабатывать наш крон. Для этого в WP есть специальный фильтр “cron_schedules”:
add_filter(‘cron_schedules’, function ($schedules) < $schedules[’10sec’] = [ ‘interval’ =>10, ‘display’ => __(‘Every 10 sec’), ]; return $schedules; >);
в нашем случае, к переменной “$schedules” мы добавим еще один массив, ключом которого будет наш интервал. В котором “interval” — длительность интервала в секунду, “display” — название интервала.
В листинге ниже:
add_action(‘wp’, function() < if(!wp_next_scheduled(‘rest_api_media’)) < wp_schedule_event( time(), ’10sec’, ‘rest_api_media’); >>);
выполняем вызов созданного чуть позже нами хука, с периодичностью в 10 сек.
WordPress функция “wp_next_scheduled(‘rest_api_media’)”, проверяет, нужно ли в это время вызывать хук переданный в аргументе или еще подождать. Если время пришло — вызываем хук через ф-ю “wp_schedule_event”, и устанавливаем временную метку.
И основной код, отвечающий за upload изображений по API в наш или сторонний сайт на WordPress:
add_action(‘rest_api_media’, function () < $username = ‘admin’; $password = ‘qweqwe’; $headers = [ ‘Authorization’ =>’Basic ‘ . base64_encode($username . ‘:’ . $password), ]; $url = мой-сайт/wp-json/wp/v2/media/’; $file = __DIR__ . ‘/data/book.jpg’; $headers[‘Content-Disposition’] = ‘attachment; filename=»‘ . basename($file) . ‘»‘; $response = wp_remote_post($url, [ ‘headers’ => $headers, ‘body’ => file_get_contents($file) ]); $records = json_decode( wp_remote_retrieve_body($response), true ); echo ‘Code: ‘ . wp_remote_retrieve_response_code($response); echo ‘
‘; echo ‘Message: ‘ . wp_remote_retrieve_response_message($response); echo ‘
‘; echo ‘Records: ‘ . count($records); echo ‘
‘; echo ‘Answer:’; echo»$records = «;print_r($records);echo»»; // die; >);
Загрузка изображений по АПИ, для меня была самой сложной частью работы с АПИ. Т.к. информации по данной теме в интернете практически не было. А та которая была, мне никак не помогла.
Рассмотрим подробнее код выше. В первых строках мы настраиваем заголовки для авторизации. Это важная часть, т.к. без этого мы не сможем ничего загрузить на наш сайт.
$url = мой-сайт/wp-json/wp/v2/media/’; $file = __DIR__ . ‘/data/book.jpg’; $headers[‘Content-Disposition’] = ‘attachment; filename=»‘ . basename($file) . ‘»‘; $response = wp_remote_post($url, [ ‘headers’ => $headers, ‘body’ => file_get_contents($file) ]);
Указываем URL сайта для которого будет загружаться файл.
В переменной “$file”, полный путь к файлу.
И заголовок, указывающий имя загружаемого файла:
$headers[‘Content-Disposition’] = ‘attachment; filename=»‘ . basename($file) . ‘»‘;
Далее, через функцию “wp_remote_post”, мы отправляем содержимое файла, записав его в индекс массива “body”, предварительно считав содержимое файла:
$response = wp_remote_post($url, [ ‘headers’ => $headers, ‘body’ => file_get_contents($file) ]);
В ответ, АПИ сайта, отдаст нам подробную информацию о загруженном файле. Которую мы можем изучить через отладочный код ниже:
$records = json_decode( wp_remote_retrieve_body($response), true ); echo ‘Code: ‘ . wp_remote_retrieve_response_code($response); echo ‘
‘; echo ‘Message: ‘ . wp_remote_retrieve_response_message($response); echo ‘
‘; echo ‘Records: ‘ . count($records); echo ‘
‘; echo ‘Answer:’; echo»$records = «;print_r($records);echo»»;
На этом все, загрузка изображений закончена.
Источник: plance.top