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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

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

Регистрация: Sep 2008
Сообщений: 14
По умолчанию Передача разных данных серверу одним запросом

Доброго времени суток!
Извините, если частично повторяюсь, но я не нашел ответа на свой вопрос с помощью поиска...
Мне нужно передать картинку и 2 тектовых параметра серверному скрипту одним запросом или несколькими, главное, чтоб это работало! По отдельности это работает хорошо, а вместе доходит только картинка...

Код передачи картинки:
Код AS3:
var png_image_data:ByteArray = PNGEncoder.encode(data_bmp);
 
var url:String = "/getfromflash.php";
var request:URLRequest = new URLRequest(url);
request.data = png_image_data;
request.method = URLRequestMethod.POST;
request.contentType = 'application/octet-stream';
navigateToURL(request);
Код передачи текстовых полей:
Код AS3:
var url:String = "/getfromflash.php";
var request:URLRequest = new URLRequest(url);
var variables:URLVariables = new URLVariables();
variables.email1 = "blabla1@mail.com";  
variables.email2 = "blabla2@mail.com";  
request.data = variables;
request.method = URLRequestMethod.POST;
navigateToURL(request);
Если есть идеи, помогите пожалуйста! За ранее благодарен!

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

Регистрация: Jun 2007
Сообщений: 374
Закодить картинку в base64.

Старый 30.01.2009, 10:45
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 3  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
s8000_1, зачем? картинка же доходит.

Старый 30.01.2009, 11:21
dFlasher вне форума Посмотреть профиль Отправить личное сообщение для dFlasher Найти все сообщения от dFlasher
  № 4  
Ответить с цитированием
dFlasher

Регистрация: Sep 2008
Сообщений: 14
А все вместе я выполняю следующим образом:

Код AS3:
var url:String = "/getfromflash.php";
var request:URLRequest = new URLRequest(url);
var variables:URLVariables = new URLVariables();
variables.email1 = "blabla1@mail.com";  
variables.email2 = "blabla2@mail.com";  
request.data = variables;
request.method = URLRequestMethod.POST;
navigateToURL(request);
 
var png_image_data:ByteArray = PNGEncoder.encode(data_bmp);
request.data = png_image_data;
request.contentType = 'application/octet-stream';
navigateToURL(request);
Может тут что-то не так? Картинка доходит, переменных нет((

Добавлено через 8 минут
Хотя это идея, закодить в строку картинку и передать параметром... Спасибо, s8000_1, попробую!

Старый 30.01.2009, 11:38
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 5  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
dFlasher, не слушайте s8000_1, это бред. у вас ошибка тут:
Код AS3:
request.data = variables;
request.data = png_image_data;
нельзя что бы свойство data было одновременно и тем и тем. отправляйте переменные гетом. что-то типа
Код AS3:
url += "?" + variables.toString();

Старый 30.01.2009, 23:49
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 6  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Цитата:
Сообщение от BlooDHounD Посмотреть сообщение
dFlasher, не слушайте s8000_1, это бред. у вас ошибка тут:
Код AS3:
request.data = variables;
request.data = png_image_data;
нельзя что бы свойство data было одновременно и тем и тем. отправляйте переменные гетом. что-то типа
Код AS3:
url += "?" + variables.toString();
Демка передачи данных c GETом
Код:
var request:URLRequest = new URLRequest("http://www.dnadillo.dn.ua/CONTENT_PATH/upload.php?txt=TextПосылаемый&txt2=ПОСЛАНИЕ2&d="+new Date().getTime());
var loader: URLLoader = new URLLoader();
var ba:ByteArray = new ByteArray;
var i:int;
for (i=0; i<10; i++) {
	ba.writeUTFBytes(" Имитатор картинки; ");
}
request.contentType = 'application/octet-stream';


request.data = ba;
request.method = URLRequestMethod.POST;
request.contentType = 'application/octet-stream';

loader.dataFormat= URLLoaderDataFormat.BINARY;

loader.load(request);


loader.addEventListener(Event.COMPLETE,completeHandler);

function completeHandler(event:Event):void {
	trace(loader.data);
}
php
Код:
<?php
echo print_r($GLOBALS);
echo ' отдельный вывод переменной txt '.$_GET['txt'];
echo ' отдельный вывод переменной txt2 '.$_GET['txt2'];
echo ' oтдельный вывод переменной d '.$_GET['d'];

?>
trace
Код:
Array
(
    [GLOBALS] => Array
 *RECURSION*
    [HTTP_RAW_POST_DATA] =>  Имитатор картинки;  Имитатор картинки;  Имитатор картинки;  Имитатор картинки;  Имитатор картинки;  Имитатор картинки;  Имитатор картинки;  Имитатор картинки;  Имитатор картинки;  Имитатор картинки; 
    [_POST] => Array
        (
        )

    [_GET] => Array
        (
            [txt] => Text
            [txt2] => 2
            [d] => 1233344463634
        )

    [_COOKIE] => Array
        (
        )

    [_FILES] => Array
        (
        )

)
1 отдельный вывод переменной txt Text отдельный вывод переменной txt2 2 oтдельный вывод переменной d 1233344463634
как видно таким GETом не дошли только русские буквы, но они и ненужны там

Старый 30.01.2009, 16:25
dFlasher вне форума Посмотреть профиль Отправить личное сообщение для dFlasher Найти все сообщения от dFlasher
  № 7  
Ответить с цитированием
dFlasher

Регистрация: Sep 2008
Сообщений: 14
Я не думаю, что это ошибка. Когда я переопределяю свойство data, то первая порция данных уже должна быть отправлена. Даже, если я заведу отдельный экземпляр класса URLRequest, то результат будет тот же... тут ошибка не в этом.

А проблема действительно решилась после конвертирования ByteArray в String c помощью Base64 и передачей картинки через variables, как и остальных параметров.

Спасибо!

Старый 30.01.2009, 16:34
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 8  
Ответить с цитированием
s8000_1
 
Аватар для s8000_1

Регистрация: Jun 2007
Сообщений: 374
BlooDHounD, GET это GET, просто как я понял, вопрос-то в том, как POSTом отправить одновременно и картинку, и текст.

Я другого простого способа не знаю, кроме как превратить картинку в строку...

Старый 30.01.2009, 16:38
Nirth вне форума Посмотреть профиль Отправить личное сообщение для Nirth Посетить домашнюю страницу Nirth Найти все сообщения от Nirth
  № 9  
Ответить с цитированием
Nirth
4AM Games
 
Аватар для Nirth

блогер
Регистрация: Nov 2002
Адрес: Sofia
Сообщений: 6,264
Записей в блоге: 1
Отправить сообщение для Nirth с помощью ICQ Отправить сообщение для Nirth с помощью AIM Отправить сообщение для Nirth с помощью MSN Отправить сообщение для Nirth с помощью Yahoo Отправить сообщение для Nirth с помощью Skype™
@dFlasher
Вы отправляете два разных запроса, если хотите одним, то нужно либо послать пост Base64 и остальные данные, как говорит s8000_1, но это каменный век. Или послать картинку POST, а остальные данные GET'ом, как собственно BloodHound и советует.
__________________
Я перестал переписывать, начал редактировать, еще лет 15 и я стану писателем ^_^

Старый 30.01.2009, 22:11
s8000_1 вне форума Посмотреть профиль Отправить личное сообщение для s8000_1 Найти все сообщения от s8000_1
  № 10  
Ответить с цитированием
s8000_1
 
Аватар для s8000_1

Регистрация: Jun 2007
Сообщений: 374
Nirth, почему каменный век? В гет не запихнешь текстовое поле размером 2кб + геты в броузерах глючат (если, например, верхний/нижний регистр использовать)

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

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

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


 


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


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