[JS]Отправка фотографии в фотоальбом пользователя.

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
ghostukr
Сообщения: 4
Зарегистрирован: 14 апр 2014, 09:18

[JS]Отправка фотографии в фотоальбом пользователя.

Сообщение ghostukr »

Доброго времени суток.Возникла проблема при создании пост запроса.
Задача:Отправить фотографию с URL(Не с компьютера,а с ресурса) в фотоальбом вконтакте.

Как написано в документации,отправка фото идет в 3 шага.
1) photos.getUploadServer,получаем upload_url .
2) Пост запрос создать не смог,может указал что не так?
3) Сохранение фотографии

Как приблизительно должен выглядеть пост в моем случае?

Что-я колдовал :

Код: Выделить всё

 var uploadurl;VK.Api.call('photos.getUploadServer', {album_id:168913359}, function(r) { if(r.response) {uploadurl = (""+r.response.upload_url);sendPost();}});function sendPost(){//Отправляем Неизвестный мне POST} 
В интернет-ресурсе,нашел пример запроса.

Код: Выделить всё

 $$a({        type:'post',//тип запроса: get,post либо head        url:'ajax.php',//url адрес файла обработчика        data:{'z':'1'},//параметры запроса        response:'text',//тип возвращаемого ответа text либо xml        success:function (data) {//возвращаемый результат от сервера            $$('result',$$('result').innerHTML+'<br />'+data);        }    }); 
Как я понимаю,в полях:
url - указываем upload_url полученный в первом шаге
data - указываем "file1":"содержимое фотографии?"

И в результате,в контейнере result должен выйти JSON ответ от сервера ВК?
Хм..Как я еще понимаю,JS вообще не пойдет для таких целей,пора использовать PHP?
Аватара пользователя
alexandr_ratush
Сообщения: 94
Зарегистрирован: 05 мар 2014, 21:47

Re: [JS]Отправка фотографии в фотоальбом пользователя.

Сообщение alexandr_ratush »

Добрый день! Вот так я загружал фото в альбом:

Код: Выделить всё

 /** Функция загружает картинку в альбом пользователя */function loadToAlbum(_title, _file_name) {    var album_id = 0;    var upload_server_url = "";        // Запрос к АРI на получение id альбома пользователя по его названию    VK.api('photos.getAlbums', {owner_id: vkuser.account.id}, function (data) {        //        for (var i in data.response.items) {            if (data.response.items[i].title == _title) {                album_id = data.response.items[i].id;            }        }                // Запрос к АРI на получение адреса сервера для загрузки файла        VK.api('photos.getUploadServer', {album_id: album_id}, function (data) {            if (data.response) {                // Адрес сервера                upload_server_url = data.response.upload_url;                                // POST запрос (файл должен находиться на нашем сервере, параметры: адрес сервера для загрузки и название картинки, которая должна находиться возле php-файла)                $.post('http://localhost/uploadimage.php', {upload_url: upload_server_url, upload_file_name: _file_name}, function (json) {                                        // Сохраняем                    VK.api("photos.save", {"server":json.server, "photos_list":json.photos_list, "album_id":album_id, "hash":json.hash}, function (data) {                        console.log('photos.save', data);                    });                }, 'json');            }        });    });}
Файл uploadimage.php :

Код: Выделить всё

 <?php         if (isset($_POST["upload_url"])) {        $upload_url = $_POST["upload_url"];        $upload_file_name = $_POST["upload_file_name"];               // мы посылаем название файла, поэтому картинка должна находиться в этой же папке!!!        $post_params['photo'] = '@'.$upload_file_name;             $ch = curl_init();        curl_setopt($ch, CURLOPT_URL, $upload_url);        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);        curl_setopt($ch, CURLOPT_POST, true);        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);        $result = curl_exec($ch);        curl_close($ch);               //var_dump($result);        $result = json_decode($result);               $mess = array (server => $result->server, photos_list=> $result->photos_list, hash => $result->hash);               echo json_encode($mess);           }?>
ghostukr
Сообщения: 4
Зарегистрирован: 14 апр 2014, 09:18

Re: [JS]Отправка фотографии в фотоальбом пользователя.

Сообщение ghostukr »

А можно использовать другой PHP сервер?
например hostinger.ru
ghostukr
Сообщения: 4
Зарегистрирован: 14 апр 2014, 09:18

Re: [JS]Отправка фотографии в фотоальбом пользователя.

Сообщение ghostukr »

Огромное спасибо,"соединил" оба кода,все работает.Правда долго,но работает.Сейчас стараюсь разобрать часть твою PHP.Вроде,ничего сложного.
Ответить