|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jun 2010
Сообщений: 107
|
Вопрос про отправку картинки на стену
Задача - отправить картинку, генерируемую в приложении на стену.
Опишу по порядку, что делаю. Сначала получаю адрес для загрузки картинки с помощью wall.getPhotoUploadServer. С этим проблем не возникает. Затем кодирую картинку в ЖПГ и отправляю ее по полученному адресу с помощью MultipartURLLoader вот так: byteArray = new ByteArray(); var encoder:JPGEncoder = new JPGEncoder(100); byteArray = encoder.encode(myBitmapData); mll = new MultipartURLLoader(); mll.addEventListener(Event.COMPLETE, onMLLUploadComplete); mll.addFile(byteArray, "file.jpg", "file1", 'image/jpeg'); mll.load(vKPhotoServer); {"mid": "1234516326", "gid": "0", "server": "302401", "photo": "", "hash": "edf6w39ffdd5tt8050b2sdf23f334y6"} Как видите, поле photo пустое. И из-за этого на следующих этапах возникает ошибка. Кто-нибудь может сказать что я делаю не так? В другом приложении, при замене аватарки я загружаю изображение точно таким же способом и поле photo не пустое приходит и все отлично работает. А тут вот ошибка почему-то... |
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
|
|
|||||
Регистрация: Nov 2010
Сообщений: 434
|
возможен и такой вариант если вы отправляете картинку без активного действия, т.е. перед отправкой пользователь обязательно должен нажать на кнопку отправки или просто щёлкнуть левой кнопкой мышки,
если этого вы не делали то придёт такой ответ. {"mid": "1234516326", "gid": "0", "server": "302401", "photo": "", "hash": "edf6w39ffdd5tt8050b2sdf23f334y6"} а на стену можно и с полем file1 загружать Последний раз редактировалось ЗлОй ПрОграММер; 16.12.2011 в 02:32. |
|
|||||
Регистрация: Jun 2010
Сообщений: 107
|
mikhailk, не сработало. Все то же самое.
ЗлОй ПрОграММер, у меня в этом смысле все нормально - загружается от действия пользователя, а не просто так. Блин, что же я не так делаю? тут ведь наверняка полно людей, которые реализовали загрузку фоток на стены. Поделитесь может примерами кода??? |
|
|||||
Регистрация: Nov 2010
Сообщений: 434
|
понял в чём у вас дело )
метод называется photos.getWallUploadServer, а не wall.getPhotoUploadServer http://vk.com/developers.php?oid=-1&...llUploadServer только вот не пойму в чём разница между ними, но в своём проекте я использую photos.getWallUploadServer |
|
|||||
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Цитата:
var fileContentType:String = 'image/jpeg'; var mpLoader:MultipartURLLoader = new MultipartURLLoader(); mpLoader.addEventListener(Event.COMPLETE, imageForWallUploaded); mpLoader.addFile(byteArray, "image.jpg", "photo", fileContentType); mpLoader.load(saverUrl); А вот байтовый массив - точно создается? ЗЫ. Адрес для загрузки - да, через getPhotoUploadServer. |
|
|||||
Всем привет!
Тоже возникли затруднения с загрузкой картинки на сервер Вконтакте. Делал все согласно документации: Загрузка фотографий на стену пользователя Итак, рисую картинку, и пытаюсь ее сохранить на сервере. Приведу код: // Сервер для загрузки картинок private function photosGetUploadServer():void { VK.api("photos.getWallUploadServer", {}, onCompleteServer, WallWallError); } // Если все норм, делаем скриншот и загружаем на сервер private function onCompleteServer(response:Object):void { log("onCompleteServer.response : " + response.upload_url); // Здесь формируем картинку var OutBitmap:BitmapData = new BitmapData(screen.width, screen.height); OutBitmap.draw(screen); var data:ByteArray = PNGEncoder.encode(OutBitmap); mpLoader = new MultipartURLLoader(); mpLoader.addFile(data, "photo.jpg", "photo", 'image/jpeg'); mpLoader.addEventListener(Event.COMPLETE, WallSavePhotoPost); mpLoader.load(response.upload_url); //загружаем по пришедшему адресу } // После успешной загрузки, сохраняем картинку - photos.saveWallPhoto private function WallSavePhotoPost(e:Event):void { var answer:String = mpLoader.loader.data; serverAswer = answer; log("WallSavePhotoPost.answer : " + answer); var data:Object = new JSONDecoder(answer).getValue(); VK.api("photos.saveWallPhoto", { server: data.server, photo:data.photo, hash: data.hash }, WallSaveAppPost, WallWallError); } // Получаем ответ о загруженной картинке private function WallSaveAppPost(_data:Object):void { log("WallSaveAppPost.answer : " + _data); /* Output <?xml version="1.0" encoding="utf-8"?> <response list="true"> <photo> <id>photo75313495_275300989</id> <pid>275300989</pid> <aid>-14</aid> <owner_id>75313495</owner_id> <src>http://cs9774.vkontakte.ru/u75313495/-14/m_43f6b49d.jpg</src> <src_big>http://cs9774.vkontakte.ru/u75313495/-14/x_60fab07d.jpg</src_big> <src_small>http://cs9774.vkontakte.ru/u75313495/-14/s_9558c789.jpg</src_small> <created>1326448994</created> </photo> </response> */ // Здесь можно использовать либо команду wall.post или wall.savePost } 1) Самое интересное, если я пишу в строке браузера http://vkontakte.ru/[id - пришедший] (Пример: http://vkontakte.ru/photo75313495_275300201], то картинка в браузере не отображется и пишет ошибка. Так непонятно ПОЧЕМУ? Если же в браузере вставить ссылку которая пришла в ТЭГе <src_big> - то она показывается 2) Если же использовать команду wall.savePost /* Этот код чуть ниже в функции WallSaveAppPost */ // serverAswer - это ответ полученный на запрос загрузки картинки на сервер вКонтакте var data:Object = new JSONDecoder(serverAswer).getValue(); VK.api('wall.savePost', { wall_id: viewer_id, server: data.server, photo: data.photo, hash: data.hash, message: "Смотри, какая красивая картинка." }, WallPosted, WallWallError); /* Output <?xml version="1.0" encoding="utf-8"?> <error> <error_code>121</error_code> <error_msg>Invalid hash</error_msg> ... */ Непонятно почему приходит Invalid hash - потому что этот параметр возвращается всего один раз |
Часовой пояс GMT +4, время: 23:31. |
|
« Предыдущая тема | Следующая тема » |
|
|