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

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

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

Регистрация: Aug 2010
Сообщений: 14
По умолчанию UrlLoad.load не запускается.

Здравствуйте. Пытаюсь отправить фотографию в альбом Вконтакте. Собственно в переменной url лежит адрес сервера для загрузки. В последней строчке вызываю метод load. Но проблема в том, что функция ничего не отправляет и не выводит ошибок. В чем проблема?

Код AS3:
var ba:ByteArray = new ByteArray();
var encoder:PNGEncoder = new PNGEncoder();
var bd:BitmapData = new BitmapData(CityFarm.instance.width, CityFarm.instance.height);
var mul:MultipartURLLoader = new MultipartURLLoader();
 
bd.draw(world.layer);
ba = encoder.encode(bd);
ba = MultipartData.addFile(ba, "image1");
 
var request:URLRequest = new URLRequest();
request.url = url;
request.requestHeaders.push(new URLRequestHeader("Content-type", "multipart/form-data; boundary=" + MultipartData.BOUNDARY));
request.method = URLRequestMethod.POST;
request.data = ba;
 
var imageLoader:URLLoader = new URLLoader();
imageLoader.dataFormat = URLLoaderDataFormat.BINARY;
imageLoader.addEventListener(Event.COMPLETE, onLoaderComplete);
imageLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOErrorHandler);
imageLoader.load(request);
MultipartData
Код AS3:
package org.flashgate.external.uploader {
	import flash.utils.ByteArray;
	/**
	 * ...
	 * @author rzer
	 */
	public class MultipartData{
 
		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;
		}
 
	}
 
}

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

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Возможно дело в политике безопасности.
Цитата:
В приложении Flash Player 10 и более поздней версии при использовании типа содержимого multipart (например, multipart/form-data), в котором содержится отправка (обозначена параметром filename в заголовке content-disposition в теле оператора POST), к операции POST применяются правила безопасности для отправок:

Операция POST должна быть выполнена в ответ на действие, инициированное пользователем, такое как щелчок мыши или нажатие клавиши.
Если операция POST является междоменной (назначением операции POST не является сервер, на котором содержится SWF-файл, отправляющий запрос POST), целевой сервер должен предоставить файл политик URL, в котором разрешен междоменный доступ.
Кроме того, все объекты multipart Content-Type должны иметь допустимый синтаксис (в соответствии со стандартами RFC2046). Если синтаксис является недопустимым, к операции POST применяются правила безопасности, действующие для загрузок.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 04.07.2011, 19:05
kiloT вне форума Посмотреть профиль Отправить личное сообщение для kiloT Найти все сообщения от kiloT
  № 3  
Ответить с цитированием
kiloT

Регистрация: Aug 2010
Сообщений: 14
а почему try catch ничего не ловит?

если я использую такой способ тогда вываливается ошибка про безопасность:
Код AS3:
mul.addEventListener(Event.COMPLETE, onLoaderComplete);
mul.addFile(ba, "file1.png", "file1", 'image/png');
mul.load(url);
а с приведенным в самом начале нет.

И вообще можно ли как нибудь обойтись без действий пользователя?

Старый 04.07.2011, 19:19
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 4  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
а почему try catch ничего не ловит?
try catch ничего и не словит на асинхронной операции.
Цитата:
И вообще можно ли как нибудь обойтись без действий пользователя?
К счастью нет.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 04.07.2011, 19:37
kiloT вне форума Посмотреть профиль Отправить личное сообщение для kiloT Найти все сообщения от kiloT
  № 5  
Ответить с цитированием
kiloT

Регистрация: Aug 2010
Сообщений: 14
Спасибо за разъяснения.

Добавлено через 15 минут
Делаю так:
Код AS3:
mul.addEventListener(Event.COMPLETE, onLoaderComplete);
mul.addFile(ba, "file1.png", "file1", 'image/png');
 
world.addEventListener(MouseEvent.CLICK, function load(e:Event):void { 
                                           try{
                                             mul.load(url); 
                                           }catch (e:Error) {
					      new MessageWindow("ERROR", e.message).show();
				           }
                                    } 
              );
Но все равно глухо как в танке. Вообще кто нибудь отправлял фотографии в альбом?


Последний раз редактировалось kiloT; 04.07.2011 в 19:56.
Создать новую тему Ответ Часовой пояс GMT +4, время: 16:49.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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