Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Отправка файлов методом POST (http://www.flasher.ru/forum/showthread.php?t=130497)

Reckoned 27.09.2009 20:23

Отправка файлов методом POST
 
Здравствуйте.
Есть задача:
формировать POST-запрос на адрес.
Запрос должен содержать поля file1-file5, которые содержат файлы с изображениями (JPG, PNG, BMP или GIF).
У меня есть DisplayObject, пробую это сделать так, но ничего не выходит.
Подскажите как сделать, чтоб отправлялись файлы.

Код AS3:

var profile:Object = new Object();
                        for each (var field:XML in e.*)
                        {
                                if(field.name().toString() == "upload_url")
                                {
                                        uploadHref = field.toString();
                                        break;
                                }
 
                        }
 
 
                        var bd:BitmapData = new BitmapData(FormPointer.ImagesFull.content.width, FormPointer.ImagesFull.content.height, true,0xFFFFFFFF);
                        bd.draw(FormPointer.ImagesFull.content);
                        var output:String = "";
                        // Iterate through each of the pixels, and add their color to the output string
                        for(var i:Number=0;i<bd.width;i++)
                        {
                                for(var j:Number=0;j<bd.height;j++)
                                {
                                        output+=bd.getPixel(j,i).toString(16);
                                        for (var z=0; z<6-bd.getPixel(j,i).toString(16).length; z++) {
                                        output+="0";
                                        }
                                }
                        }       
                        var scriptRequest:URLRequest = new URLRequest(uploadHref);
                        var header:URLRequestHeader = new URLRequestHeader("Content-Type", "multipart/form-data");
                        var scriptLoader:URLLoader = new URLLoader();
                        var scriptVars:URLVariables = new URLVariables();
                        scriptRequest.requestHeaders.push(header);
 
                        scriptLoader.addEventListener(Event.COMPLETE, completeHandler);
                        scriptLoader.addEventListener(IOErrorEvent.IO_ERROR, handleLoadError);
 
                        scriptVars.file1 = output;
 
                        scriptRequest.method = URLRequestMethod.POST;
                        scriptRequest.data = scriptVars;
 
                        scriptLoader.load(scriptRequest);
 
                        function handleLoadError($evt:IOErrorEvent):void
                        {
                                trace("Message failed.");
                        }


Felicast 27.09.2009 21:28

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

зы: а вот это вообще АЦЦКИ ЖЖЕТ:
Код AS3:

for (var z=0; z<6-bd.getPixel(j,i).toString(16).length; z++)


Reckoned 27.09.2009 21:37

А как по другому?
Я уже зашился, и не понимаю как отправить POST Запросом 5 файлов.
Имея их в DisplayObject (UILoader).
Думал пикселями, но видимо не правильно думал

Добавлено через 2 минуты
Уже переделал так, посылает байты нормально.
но результат тот же :
(
Код AS1/AS2:

function GetUploadHref(e:XML)
                {
                        var profile:Object = new Object();
                        for each (var field:XML in e.*)
                        {
                                if(field.name().toString() == "upload_url")
                                {
                                        uploadHref = field.toString();
                                        break;
                                }
 
                        }
 
 
                        var bd:BitmapData = new BitmapData(FormPointer.ImagesFull.content.width, FormPointer.ImagesFull.content.height, true,0xFFFFFFFF);
                        bd.draw(FormPointer.ImagesFull.content);
 
                        var jpgEncoder:JPGEncoder = new JPGEncoder(80);
                        var png_image_data:ByteArray = jpgEncoder.encode(bd);
 
                        var scriptRequest:URLRequest = new URLRequest(uploadHref);
                        var header:URLRequestHeader = new URLRequestHeader("Content-Type", "multipart/form-data");
                        var scriptLoader:URLLoader = new URLLoader();
 
                        var uv:URLVariables = new URLVariables();
 
                        uv.file1 =  Base64.encodeByteArray(png_image_data);;
 
                        scriptLoader.addEventListener(Event.COMPLETE, completeHandler);
                        scriptLoader.addEventListener(IOErrorEvent.IO_ERROR, handleLoadError);
 
 
 
                        scriptRequest.method = URLRequestMethod.POST;
                        scriptRequest.data = uv;
                        scriptRequest.requestHeaders.push(header);
                        scriptLoader.load(scriptRequest);
 
                        function handleLoadError($evt:IOErrorEvent):void
                        {
                                trace("Message failed.");
                        }
                }



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

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