Делаю следующим образом:
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" width="718" height="546"
>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:ComboBox x="167" y="10" id="_slideNumber">
<s:ArrayCollection>
<fx:String>Электроотопление</fx:String>
<fx:String>Электрофурнитура</fx:String>
<fx:String>Напольные покрытия</fx:String>
<fx:String>Натяжные потолки</fx:String>
<fx:String>Греющие стекла</fx:String>
<fx:String>Светильники</fx:String>
</s:ArrayCollection>
</s:ComboBox>
<s:TextInput x="167" y="41" width="146" id="_pageName"/>
<s:Label x="10" y="41" text="Page Name" height="22" width="109" verticalAlign="middle"/>
<s:Label x="10" y="10" text="Choose slide" height="22" width="109" verticalAlign="middle"/>
<mx:RichTextEditor x="167" y="71" dropShadowVisible="false" width="530" height="248" id="_pageText">
</mx:RichTextEditor>
<s:Label x="10" y="71" text="Page text" height="22" width="109" verticalAlign="middle"/>
<s:Button x="10" y="327" label="Select image" id="_downloadImage" click="{chooseImage()}"/>
<mx:Image x="167" y="327" width="260" height="180" id="_imageHolder"/>
<s:Button x="627" y="515" label="Save" id="_saveButton" activate="false" click="saveData()"/>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
private var _fr:FileReference=new FileReference();
private var _ar:Array=new Array();
private function saveData():void
{
if(
_slideNumber.selectedIndex>(-1)
&&
_pageName.text.length>0
&&
_pageText.htmlText.length>0
&&
_fr.data!=null
)
{
var imgUrl:String="http://site.com/flash/SlideGallery/data/images/"+_fr.name;
_ar=[
_slideNumber.selectedIndex, //0
_slideNumber.selectedItem, //1
_pageName.text, //2
_pageText.htmlText, //3
imgUrl, //4
_fr.name //5
];
_ar.push(_fr.data);
Alert.show(String(_ar[6].length), "");
var gw:NetConnection = new NetConnection();
var res:Responder = new Responder(resultFunc, faultFunc);
gw.connect("http://site.com/amfphp/gateway.php");
gw.call("SlideGalleryAdmin.SaveData_Func", res, _ar);
}
else
{
Alert.show("Nope!", "Error");
}
}
private function chooseImage():void
{
_fr.browse();
_fr.addEventListener(Event.SELECT, showSelectedPicture);
}
private function showSelectedPicture(e:Event):void
{
_fr.load();
_fr.addEventListener(Event.COMPLETE, loadImage);
}
private function loadImage(e:Event):void
{
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
loader.loadBytes(_fr.data);
}
private function imageLoaded(e:Event):void
{
var content:* = e.target.content;
var BMPData:BitmapData = new BitmapData(_imageHolder.width, _imageHolder.height);
var UIMatrix:Matrix = new Matrix();
BMPData.draw(content, UIMatrix);
/*
var bmd:BitmapData=new BitmapData(_imageHolder.width, _imageHolder.height);
var rect:Rectangle=new Rectangle(0, 0, _imageHolder.width, _imageHolder.height);
bmd.setPixels(rect, _fr.data);*/
_imageHolder.source=new Bitmap(BMPData);
}
//Если ответ от сервера не получен - выводим Alert сообщающий об ошибке
private function faultFunc(responds:Object):void
{
Alert.show("F*ck", "Error");
}
//проверочная ф-ция на то что сервер отвечает
private function resultFunc(responds:Object):void
{
//var arr:Array=responds;
Alert.show(String(responds), "Message");
}
]]>
</fx:Script>
</s:Application>
php
PHP код:
<?php
class SlideGalleryAdmin
{
function SaveData_Func($ar)
{
include ("Config.php");
error_reporting(0);
$dbconnect = mysql_connect ($host, $user, $pass);
mysql_set_charset("utf8");
if (!$dbconnect)
{
return "Access denide";
}
if(@mysql_select_db($db))
{
$saveData=mysql_query("INSERT INTO
table (`slide_number`, `slide_name`, `page_title`, `page_text`, `page_image_url`)
VALUES
('".$ar[0]."', '".$ar[1]."', '".$ar[2]."', '".$ar[3]."', '".$ar[4]."')");
file_put_contents( $_SERVER['DOCUMENT_ROOT'] . '/flash/SlideGallery/data/images/' .$ar[5], $ar[6]);
return "ok";
}
else
{
return "DB denide";
}
}
}
?>
в итоге на ftp файл размером 0 байт ... что не так?