Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.12.2011, 17:36
Light вне форума Посмотреть профиль Отправить личное сообщение для Light Найти все сообщения от Light
  № 1  
Ответить с цитированием
Light

Регистрация: Jun 2010
Сообщений: 107
Question Вопрос про отправку картинки на стену

Задача - отправить картинку, генерируемую в приложении на стену.

Опишу по порядку, что делаю.

Сначала получаю адрес для загрузки картинки с помощью wall.getPhotoUploadServer. С этим проблем не возникает.

Затем кодирую картинку в ЖПГ и отправляю ее по полученному адресу с помощью MultipartURLLoader вот так:

Код AS3:
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 не пустое приходит и все отлично работает. А тут вот ошибка почему-то...

Старый 14.12.2011, 14:29
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 2  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Код AS3:
mll.addFile(byteArray, "file.jpg", "photo", 'image/jpeg');

Старый 15.12.2011, 12:31
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 3  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
возможен и такой вариант если вы отправляете картинку без активного действия, т.е. перед отправкой пользователь обязательно должен нажать на кнопку отправки или просто щёлкнуть левой кнопкой мышки,
если этого вы не делали то придёт такой ответ.
Код AS3:
{"mid": "1234516326", "gid": "0", "server": "302401", "photo": "", "hash": "edf6w39ffdd5tt8050b2sdf23f334y6"}
попробуйте сделать событие MOUSE_DOWN и в его обработчике пишите mll.load(vKPhotoServer);
а на стену можно и с полем file1 загружать


Последний раз редактировалось ЗлОй ПрОграММер; 16.12.2011 в 02:32.
Старый 16.12.2011, 08:09
Light вне форума Посмотреть профиль Отправить личное сообщение для Light Найти все сообщения от Light
  № 4  
Ответить с цитированием
Light

Регистрация: Jun 2010
Сообщений: 107
mikhailk, не сработало. Все то же самое.

ЗлОй ПрОграММер, у меня в этом смысле все нормально - загружается от действия пользователя, а не просто так.

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

Старый 16.12.2011, 11:08
ЗлОй ПрОграММер вне форума Посмотреть профиль Отправить личное сообщение для ЗлОй ПрОграММер Найти все сообщения от ЗлОй ПрОграММер
  № 5  
Ответить с цитированием
ЗлОй ПрОграММер

Регистрация: Nov 2010
Сообщений: 434
понял в чём у вас дело )
метод называется photos.getWallUploadServer, а не wall.getPhotoUploadServer
http://vk.com/developers.php?oid=-1&...llUploadServer

только вот не пойму в чём разница между ними, но в своём проекте я использую photos.getWallUploadServer

Старый 17.12.2011, 01:12
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 6  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Цитата:
Поделитесь может примерами кода???
У меня в старых проектах, пока подключался как flash-приложения, был вот такой код и он работает в них до сих пор:

Код AS3:
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.

Старый 13.01.2012, 15:33
bumblebee вне форума Посмотреть профиль Отправить личное сообщение для bumblebee Найти все сообщения от bumblebee
  № 7  
Ответить с цитированием
bumblebee

Регистрация: Jul 2008
Адрес: Design, Flash
Сообщений: 22
Отправить сообщение для bumblebee с помощью ICQ Отправить сообщение для bumblebee с помощью Skype™
Всем привет!

Тоже возникли затруднения с загрузкой картинки на сервер Вконтакте.
Делал все согласно документации: Загрузка фотографий на стену пользователя
Итак, рисую картинку, и пытаюсь ее сохранить на сервере.
Приведу код:
Код AS3:
// Сервер для загрузки картинок
	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
	         }
В функции я описал что приходит в ответе Output.
1) Самое интересное, если я пишу в строке браузера http://vkontakte.ru/[id - пришедший] (Пример: http://vkontakte.ru/photo75313495_275300201], то картинка в браузере не отображется и пишет ошибка. Так непонятно ПОЧЕМУ?
Если же в браузере вставить ссылку которая пришла в ТЭГе <src_big> - то она показывается

2) Если же использовать команду wall.savePost
Код AS3:
/*
Этот код чуть ниже в функции 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>
...
*/
viewer_id - id пользователя просматривающего приложение

Непонятно почему приходит Invalid hash - потому что этот параметр возвращается всего один раз

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:31.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.