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

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

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

Регистрация: Feb 2014
Сообщений: 25
По умолчанию Пример работы photos.getWallUploadServer

Добрый вечер. понимаю, что вас все задолбали, но просто уже второй день мучаюсь. Не могу картинку с хостинка на стену пользователю закинуть. Собственно документации как таковой в контакте мало и не понятно, не подскажите ссылкой или уроком. Есть куча кусков, но одного нормального примера нету. Помогите, а то еще чуть чуть и забьюсь в угол как маленькая девочка, обнимая руками колени.

Старый 13.02.2014, 14:45
Probity вне форума Посмотреть профиль Отправить личное сообщение для Probity Посетить домашнюю страницу Probity Найти все сообщения от Probity
  № 2  
Ответить с цитированием
Probity

Регистрация: Jan 2010
Сообщений: 69
Отправить сообщение для Probity с помощью Skype™
Должен быть подключен Vk Api к флэшке и авторизован пользователь. Так реализуется отправка файла Вконтакте в моем приложении:

Код AS3:
VK.api('photos.getWallUploadServer',{ uid:  userid },responseFromServer,onError);
userid - номер пользователя (можно получить через friends.get). Если не указано - постит на стенку пользователя. Если постить в группу, то gid: группа.

Для загрузки картинки я использовал класс MultipartURLLoader. Скачать например тут. Ему передаем файл картинки в ByteArray.

Код AS3:
function responseFromServer(data)
		{
			mll = new MultipartURLLoader();
			mll.addEventListener(Event.COMPLETE, onUploadCompleteThroughAlarm);
			mll.addFile(byteArray, "file.jpg", "file1", 'image/jpg');
			mll.load(data.upload_url);
		}
Картинка загружена Вконтакте. Теперь сохраняем её на стену пользователю.

Код AS3:
function onUploadCompleteThroughAlarm(e:Event)
		{
			var answer:String = mll.loader.data;
			var data:Object = JSON.parse(answer); 
			VK.api('photos.saveWallPhoto', {uid: userid, server:data.server, photo:data.photo, hash:data.hash }, onSaveWallPhoto, onError2);
}
Если картинка не сохраняется (например, не берется её ByteArray), то есть большая вероятность, что нарушены правила безопасности флэша.

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

Регистрация: Feb 2014
Сообщений: 25
все равно не понятно)
откуда взялось :
Код AS3:
mll.load(data.upload_url);
Код AS3:
var data:Object = JSON.parse(answer);
И не понятна работа photos.getWallUploadServer . Я думал нужно обращаться к скрипту.

вот моя писанина не работающая)
Код AS3:
package 
{
  import adobe.utils.CustomActions;
  import flash.display.Sprite;
  import flash.events.DataEvent;
  import flash.media.Microphone;
  import flash.media.Sound;
  import flash.media.SoundChannel;
  import flash.media.SoundTransform;
  import flash.net.drm.LoadVoucherSetting;
  import flash.utils.ByteArray;
  import vk.api.MD5;
  import flash.net.navigateToURL;
  import flash.net.*;
  import flash.display.*;
  import vk.api.serialization.json.JSON;
 
  import flash.utils.getDefinitionByName;
 
  import flash.text.*;
  import vk.APIConnection;
  import vk.events.*;
  import vk.ui.VKButton;
  import flash.display.Loader;
  import flash.display.SimpleButton;
  import flash.display.Sprite;
  import flash.events.Event;	
  import flash.events.MouseEvent;
  import flash.net.URLRequest;
 
	/**
	 * ...
	 * @author Lampy
	 */
	public class Main extends Sprite 
	{
		private var flashVars: Object = stage.loaderInfo.parameters as Object;
		private var VK: APIConnection = new APIConnection(flashVars);
 
		private var mll:MultipartURLLoader = new MultipartURLLoader();
		private var pictureBytaArray:ByteArray = new ByteArray();
 
 
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
		var btn:VKButton = new VKButton('qqqqqqqqQQqqqq');
		addChild(btn);
		btn.addEventListener(MouseEvent.CLICK, onclics);
 
 
 
		}
 
		private function onclics (e:MouseEvent) : void {
 
		VK.api('photos.getWallUploadServer',{ uid:''},responseFromServers);	
			}
 
		private function responseFromServers(data)
		{
 
			mll.addEventListener(Event.COMPLETE, onUploadCompleteThroughAlarm);
			mll.addFile(pictureBytaArray, "/result1/123211.png", "file1", 'image/jpg');
			mll.load(data.upload_url);
		}
 
		private function onUploadCompleteThroughAlarm(e:Event)
			{
			trace();
						}
	}
 
}
Добавлено через 17 часов 28 минут
код сейчас выглядит так но не работает

Код AS3:
 
package 
{
  import adobe.utils.CustomActions;
  import flash.display.Sprite;
  import flash.events.DataEvent;
  import flash.geom.Matrix;
  import flash.media.Microphone;
  import flash.media.Sound;
  import flash.media.SoundChannel;
  import flash.media.SoundTransform;
  import flash.net.drm.LoadVoucherSetting;
  import flash.utils.ByteArray;
  import ru.inspirit.image.encoder.JPGEncoder;
  import vk.api.MD5;
  import flash.net.navigateToURL;
  import flash.net.*;
  import flash.display.*;
  import vk.api.serialization.json.JSON;
 
 
  import flash.utils.getDefinitionByName;
 
  import flash.text.*;
  import vk.APIConnection;
  import vk.events.*;
  import vk.ui.VKButton;
  import flash.display.Loader;
  import flash.display.SimpleButton;
  import flash.display.Sprite;
  import flash.events.Event;	
  import flash.events.MouseEvent;
  import flash.net.URLRequest;
 
	/**
	 * ...
	 * @author Lampy
	 */
	public class Main extends Sprite 
	{
		private var flashVars: Object = stage.loaderInfo.parameters as Object;
		private var VK: APIConnection = new APIConnection(flashVars);
 
		private var mll:MultipartURLLoader = new MultipartURLLoader();
		private var pictureBytaArray:ByteArray = new ByteArray();
 
		const IMAGE_URL:String = "http://www.helpexamples.com/flash/images/logo.png";
		private var ldr:Loader = new Loader();
		private var bitmap1:Bitmap;
 
		private var fl_Loader = new Loader();
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
		var btn:VKButton = new VKButton('qqqqqqqqQQqqqq');
		addChild(btn);
		btn.addEventListener(MouseEvent.CLICK, onclics);
 
		fl_ClickToLoadUnloadSWF();
		ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, ldr_complete);
		ldr.load(new URLRequest(IMAGE_URL));
		}
 
		private function fl_ClickToLoadUnloadSWF():void
			{
 
		fl_Loader.load(new URLRequest('http://adena-shop.ru/result1/1.png'));
		fl_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, drawImage2);
			}
 
 
		private function drawImage2(event:Event): void 
			{
		var mySprite:Sprite = new Sprite();
        var myBitmap:BitmapData = new BitmapData(fl_Loader.width, fl_Loader.height, false);
 
        myBitmap.draw(fl_Loader, new Matrix());
		var jpgEncoder:JPGEncoder = new JPGEncoder(100);
		pictureBytaArray = jpgEncoder.encode(myBitmap);
            }
 
 
		private function ldr_complete(evt:Event):void {
				var bmp:Bitmap = ldr.content as Bitmap;
 
				bitmap1 = new Bitmap(bmp.bitmapData);
				}  
 
		private function onclics (e:MouseEvent) : void {
 
		VK.api('photos.getWallUploadServer',{ uid:''},responseFromServers);	
			}
 
		private function responseFromServers(datas:Object) :void
		{
 
			mll.addEventListener(Event.COMPLETE, onUploadCompleteThroughAlarm);
			mll.addFile(pictureBytaArray, "file.jpg", "file1", 'image/jpg');
			mll.load(datas.upload_url);
 
		}
 
		private function onUploadCompleteThroughAlarm(e:Event) :void
			{
			var answer:String = mll.loader.data;
			var data:Object = JSON.decode(answer); 
			VK.api('photos.saveWallPhoto', {uid: '', server:data.server, photo:data.photo, hash:data.hash }, onSaveWallPhoto);
						}
 
		private function onSaveWallPhoto (e:Event) :void {
 
							}				
	}
 
}


Последний раз редактировалось Lampy; 16.02.2014 в 20:03.
Старый 15.02.2014, 18:31
Probity вне форума Посмотреть профиль Отправить личное сообщение для Probity Посетить домашнюю страницу Probity Найти все сообщения от Probity
  № 4  
Ответить с цитированием
Probity

Регистрация: Jan 2010
Сообщений: 69
Отправить сообщение для Probity с помощью Skype™
Исходя из этого поста, понял, что банальная загрузка картинки и размещение её на стену Вконтакте вызывает много проблем и ошибок. После трудностей с кодом выше, написал статью со всеми найденными проблемами и способами их решения, если кому интересно.

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

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

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


 


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


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