Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Api в контакте, постинг картинки на стену (https://javascript.ru/forum/misc/32813-api-v-kontakte-posting-kartinki-na-stenu.html)

uberchel 31.10.2012 00:17

Api в контакте, постинг картинки на стену
 
Доброе время суток, собственно столкнулся с тем, что не как не могу
отправить пост запрос на сервер вк.
получаю ссылку для загрузки методом photos.getUploadServer, после чего надо отправить пост запрос, отправляю, но там надо в параметрах указывать не ссылку на картинку, а multipart/form-data, как её получить ? недопру никак, не хотелось бы использовать пхп.

NikolasGrad 31.10.2012 12:23

Покажите код

uberchel 31.10.2012 22:24

function openfriends(friends, num) {
    VK.Api.call('friends.get', {
        fields: "uid, first_name, last_name, photo"
    }, function (r) {
        $.each(r.response, function (i, node) {
            num = String(i + 1);
            friends += '<div class="ufriends"><span>' + node.first_name + '</span><br><span>' + node.last_name + '</span><br><img src="' + node.photo + '" align="center" alt="' + node.uid + '"></div>';
        });
        new _uWnd('friends', 'Друзей : ' + num, 485, 90, {
            autosize: 1,
            maxh: 550,
            minh: 90,
            oncontent:function () {
             $('.ufriends').live('click', function () {

             VK.Api.call('photos.getWallUploadServer', {
               uid: uid          
              }, function (photo) {
             
             //тут пост запрос, который должен отправить сформировавшийся ссылку photo.response.upload_url с 
             //параметром photo содержащим не ссылку на картинку а саму картинку побитно (multipart/form-data). 
             // делал пост запрос и через ajax json но некак не выходило , возвращало статус 0
                 VK.Api.call('wall.post', {
                 owner_id: $(this).find('img').attr('alt'),
                 message: 'фото для тебя '+$(this).find('span').eq(0).html()+'\n\r'+location.href+'\n'
                 });
                });
              }); 
           }
        }, '<div id="upanel" align="center">' + friends + '</div>');
    });
}

melky 31.10.2012 22:27

если сделать <input type="file> и саму форму, то можно будет отправить ... только тогда придётся самому файл выбирать

uberchel 31.10.2012 22:32

файл - это фотка в фотогалереи, на странице полного материала будет эта кнопка, при нажатии которой, будет выходить окно, в котором выбираем кому отправить и отправляем, вообще скрипт работает отлично, если без картинки, но вот все проблема том, что это фотогалерея и картинка необходима.
пробовал я создавать форму через скрипт, но не чего не выходит, я уже просто в тупике.

NikolasGrad 01.11.2012 03:13

VK.Api.call('photos.getWallUploadServer', {
    uid : uid
},
не понятно откуда uid ?
Ладно, если глобальный.

uberchel 01.11.2012 14:51

Цитата:

Сообщение от NikolasGrad (Сообщение 213397)
VK.Api.call('photos.getWallUploadServer', {
    uid : uid
},
не понятно откуда uid ?
Ладно, если глобальный.

Да, вы правы, он глобальный - это ид пользователя вконтакте, с которого и отправляешь.
Проблема стает после photos.getWallUploadServer - мы получаем ссылку для загрузки картинки, но вот тут и образуется тормоз на пути прогресса, по этому запросу даже если не задавать не каких параметров, при посылки пост запроса, статут возвращает error, такое чувство, что сервер просто отказывается принимать свою же ссылку.

NikolasGrad 02.11.2012 00:46

VK.Api.call('photos.getWallUploadServer', {
	uid : uid_того_кому_отправляешь
}, function (answer) {
	up_url = answer.response.upload_url; // получаем upload_url, куда загружать фото
	$.post(up_url, // загружаем
	{
		photo : url_загружаемого_фото.jpg.png.gif
	}, function (request) { // параметры для сохранения
		request.uid = uid_того_кому_отправляешь;
		VK.Api.call('photos.saveWallPhoto', { // сохраняем
			request // передаем параметры полученные от post + uid_того_кому_отправляешь
		}, function (result) { // данные о сохраненном фото
			VK.Api.call('wall.post', { // постим на стену
				owner_id : result.owner_id,
				attachments : '<photo><' + result.owner_id + '>_<' + result.id + '>',
				message : 'фото для тебя '
			});
		});
	});
});

Gamestop 03.11.2012 22:44

каким макаром вы права установили при получении адреса загрузки файлов?, или если автоматический выставляются то как, где это настраивать?

uberchel 28.12.2012 19:17

NikolasGrad, Я все это пробовал, все это заканчивается на пост запросе (

Gamestop, права ставятся при аутентификации апи:

VK.Auth.login(
authInfo, // функция калбэк
8199 //права
);


Часовой пояс GMT +3, время: 11:29.