Показать сообщение отдельно
  #1 (permalink)  
Старый 06.05.2012, 22:09
Новичок на форуме
Отправить личное сообщение для Ceridan Посмотреть профиль Найти все сообщения от Ceridan
 
Регистрация: 06.05.2012
Сообщений: 1

Chrome extension и Vkontakte API загрузка изображения на стену пользователя
Здравствуйте!
Пишу свое маленькое приложение по работе с ВКонтакте на JavaScript с использованием Open API. Особенность его в том, что это приложение есть расширение для google chrome. Все вроде бы шло неплохо: научился авторизовываться, работать с api, даже постить сообщения на стену научился, но встала задача отправлять на стену изображения, на которой я споткнулся.
Вот по этой ссылке описан процесс загрузки изображения на сервер (в моем случае рассматриваю загрузку на сервер "стены"). Конкретно проблему вызывает шаг 2 - POST-запрос с изображением на полученный на первом шаге адрес сервера.
Ситуация следующая: во-первых, изображение, которые я хочу отправлять находятся на сторонних серверах, но я знаю их URL и научился по нему получать целиком изображение. А далее, все как описано по ссылке выше: получаю URL сервера для загрузки фотографий и отправляю на него пост запрос с телом изображения и даже получаю ответ, в котором есть заполненные поля server и hash, а вот поле photo пустое. В этом и проблема. Вот, как я это делаю:
1. Сначала получаю адрес сервера для загрузки. Код не привожу, приведу только URL, который приходит в ответ от сервера:
Код:
http://cs1234.vkontakte.ru/upload.php?act=do_add&mid=123456&aid=-14&gid=0&hash=91b06d3426e6df4e6601de2ef18f7a17&rhash=b745c8721d062edc5ae7cf2c2681bf41&swfupload=1&api=1&wallphoto=1
2. Теперь, зная адрес, формирую и отправляю POST запрос следующим образом:
function vkUploadImageToServer(uploadServerUrl, imageBinaryData) {
    if ((uploadServerUrl != null) && (imageBinaryData != null)) {
        $.ajax({
            url: uploadServerUrl,
            type: 'POST',
            data: { photo: imageBinaryData },
            datatype: 'json',
            success: function (value) {
                alert("Success value = " + value);
            },
            error: function (value) { alert("Error value = " + value); }
        });
    }
};

И в ответ получаю следующее:
Код:
Success value = {"server":1234,"photo":"[]","hash":"12344d1e74796d7788effdf5ead84b54"}
Соответственно, изображение, судя по ответу, на сервер не загрузилось. Как быть в такой ситуации? Может кто-то сталкивался? Ответа в гугле подходящего не нашел поэтому спрашиваю здесь. Я находил похожие решения, но большинство из них сводилось к тому, что процедуру отправки изображения исполнял серверный скрипт на PHP с использованием CURL, а у меня нет возможности использовать это решение, так как у меня расширение для хрома и негде исполнить PHP код.
Очень надеюсь на вашу помощь!

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

Последний раз редактировалось Ceridan, 06.05.2012 в 22:14.
Ответить с цитированием