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

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

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

Регистрация: Jun 2010
Сообщений: 30
По умолчанию ByteArray сохранить в альбом api 3.0

Всем привет) В интернете видел темы о том, как сохранять фото в альбом ВКонтакт, а именно как сохранить фото закодированное в ByteArray ...но все эти темы уже устарели, т.к. api 2.0 больше не актуален...Поэтому я создал новую тему, в которой хочу задать вопрос...на который сам пока не смог ответить...
------------------------
В общем как сохранить фото в альбом из ByteArray?!
Вот кусок кода по сохранению фото в альбом на api 3.0:
Код AS3:
function getAlbumsHandler2(e:Object):void{
   aid = e.aid; // Берем самый первый альбом, реализуй выбор альбома согласно потребностям приложения
   VK.api("photos.getUploadServer",{"aid":aid},getUploadServerHandler,failHandler);
}
 
function getUploadServerHandler(e:Object):void{
   var urlrequest:URLRequest = new URLRequest(e.upload_url);
   urlrequest.method = URLRequestMethod.POST;
   fileref.upload(urlrequest,"file1");
   fileref.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, fileLoadedHandler);
}
 
function fileLoadedHandler(e:DataEvent):void{
   VK.api("photos.save", JSON.decode(e.data), endUpload);
}
А вот моя картинка, закодированная в ByteArray
Код AS3:
var bitmapData:BitmapData = new BitmapData(pic.width,pic.height,false,0xffffff);
bitmapData.draw(pic);
var jpgEnc:PNGEncoder = new PNGEncoder();
var bytes:ByteArray = PNGEncoder.encode(bitmapData);
Как быть?!)) Кто поможет - буду очень, очень благодарен)

Старый 28.06.2011, 11:55
Rzer вне форума Посмотреть профиль Отправить личное сообщение для Rzer Посетить домашнюю страницу Rzer Найти все сообщения от Rzer
  № 2  
Ответить с цитированием
Rzer
 
Аватар для Rzer

блогер
Регистрация: Feb 2007
Адрес: Spb
Сообщений: 613
Записей в блоге: 8
Отправить сообщение для Rzer с помощью ICQ
Кусочек кода из класса по публикации картинок
Код AS3:
private static var imageData:ByteArray;
		private static var imageLoader:URLLoader;
		private static var imageMessage:String;
		private static var imageOptions:Object;
 
		public static function postPhoto(bd:BitmapData, func:Function,  message:String =""):void {
 
			var encoder:PNGEncoder = new PNGEncoder();
			imageData = encoder.encode(bd);
			imageData = MultpartData.addFile(imageData, "photo");
			imageMessage = message;
 
			getWallUploadServer(onGetWallUploadServer);
		}
 
		private static function onGetWallUploadServer(answer:XML):void{
			var path:String = answer.upload_url.text();
 
			var request:URLRequest = new URLRequest();
			request.url = path;
			request.requestHeaders.push(new URLRequestHeader("Content-type", "multipart/form-data; boundary=" + MultpartData.BOUNDARY));
			request.method = URLRequestMethod.POST;
			request.data = imageData;
 
			imageLoader = new URLLoader();
			imageLoader.addEventListener(Event.COMPLETE, onUploadComplete);
			imageLoader.load(request);
		}
public static function getWallUploadServer(func:Function):void {
			sendRequest( { method:"photos.getWallUploadServer"}, func );
		}
 
		private static function onUploadComplete(e:Event):void {
 
			imageOptions = JSON.deserialize(imageLoader.data);
			saveWallPhoto(imageOptions.server,imageOptions.photo,imageOptions.hash, onSavePhotoComplete);
		}
 
		static private function onSavePhotoComplete(answer:XML):void{
			var photoId:String = answer.photo.id.text();
 
			VKWrapper.saveWallPost( { attachment:photoId, message:imageMessage }, onPublicResult);
 
		}
 
public static function saveWallPhoto(server:String, photo:String, hash:String, func:Function):void {
			sendRequest( { method:"photos.saveWallPhoto", server:server, photo:photo, hash:hash}, func );
		}
Класс MultipartData:
Код AS3:
package ru.atflash.encrypt {
	import flash.utils.ByteArray;
	/**
	 * ...
	 * @author rzer
	 */
	public class MultpartData{
 
		public static const BOUNDARY:String = "----------cH2gL6ei4Ef1gL6GI3Ij5Ef1Ef1Ef1";
        private static const CRLF:String = "\r\n";
        private static const HYPHENS:String = "--";
 
		public static function addFile(file:ByteArray, name:String = "Filedata", fileName:String = "name.jpg"):ByteArray {
 
			var data:ByteArray = new ByteArray();
            data.writeUTFBytes(HYPHENS + BOUNDARY + CRLF);
            data.writeUTFBytes("Content-Disposition: form-data; name=" + name + "; filename=" + fileName + CRLF);
            data.writeUTFBytes("Content-Type: application/octet-stream" + CRLF + CRLF);
            data.writeBytes(file);
            data.writeUTFBytes(CRLF);
 
			var result:ByteArray = new ByteArray();
            result.writeBytes(data);
            result.writeUTFBytes(HYPHENS + BOUNDARY + HYPHENS);
            return result;
        }
 
	}
 
 
 
}
VKWrapper.saveWallPost метод вызывающий jsApi, или если приложение с контейнером, то с обращением к нему

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

Регистрация: Jun 2010
Сообщений: 30
Спасибо!)) Я уже давно разобрался сам!

Старый 28.06.2011, 18:58
kiloT вне форума Посмотреть профиль Отправить личное сообщение для kiloT Найти все сообщения от kiloT
  № 4  
Ответить с цитированием
kiloT

Регистрация: Aug 2010
Сообщений: 14
@geka96: и как вы поступили? можете показать пример?

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

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

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


 


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


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