Filipe, segue abaixo o fonte comentado de um componente de upload que fiz para exemplo. Mas pelo que entendi o seu problema é no backend, uma vez que faz o upload mas não o copia do temp. Você está recebendo o campo file com o nome Filedata ?
Ex: $file = $_FILES["Filedata"]; // independente do nome do seu campo file //função que copia o arquivo do temp ( no meu caso em php: copy ou move_upload_file) $copiou = move_uploaded_file($file["tmp_name"], $pasta_de_destino); if($copiou) { echo "O arquivo $file['name'] foi enviado com sucesso!"; } else { echo "Houve um erro no envio do arquivo $file['name'] "; } ============================================================= Aqui os links de referencia que utilizei em meus estudos: ScreenCast muito bom do Vedovelli http://www.vedovelli.com.br/screencasts/screencast012_20052008/ Source do Digows com fonte de backend em Php e Java http://www.digows.com/downloads/postagens/flexupload/srcview/index.html ============================================================== Aqui o exemplo que fiz ============================================================== <?xml version="1.0" encoding="utf-8"?> <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" width="550" height="88" creationComplete="init()" horizontalAlign="center"> <mx:Script> <![CDATA[ import mx.rpc.events.ResultEvent; import mx.controls.Alert; //-------------------------------------------------------------------------- // cria a variável fr:FileReference //-------------------------------------------------------------------------- private var fr:FileReference; private function init():void { fr = new FileReference; // esconde o botão cancelar cancelBtn.visible = false; // adiciona os listeners fr.addEventListener(Event.SELECT,onSelect); fr.addEventListener(Event.OPEN,onOpen); fr.addEventListener(ProgressEvent.PROGRESS,onProgress); //-------------------------------------------------------------------------- // aqui a diferença DataEvent.UPLOAD_COMPLETE_DATA ao invés de Event.COMPLETE //-------------------------------------------------------------------------- //fr.addEventListener(Event.COMPLETE,onComplete); fr.addEventListener(flash.events.DataEvent.UPLOAD_COMPLETE_DATA,onComplete); } //-------------------------------------------------------------------------- // função executada ao clicar no botão Procurar... //-------------------------------------------------------------------------- private function Browse():void { infoLoad.text = ""; // array de tipos permitidos // (por segurança costumo validar isso também no php) var tipos:FileFilter = new FileFilter("Arquivos de Imagem" ,"*.jpg; *.jpeg; *.gif; *.png;"); var tiposArq:Array = new Array(tipos); fr.browse(tiposArq); } //-------------------------------------------------------------------------- // função executada ao clicar no botão Cancelar... //-------------------------------------------------------------------------- private function Cancel():void { fr.cancel(); dispatchEvent(new Event(Event.CANCEL)); } //-------------------------------------------------------------------------- // recebe o evento SELECT do fr //-------------------------------------------------------------------------- private function onSelect(e:Event):void { var Limit:int = 150; // Mb var Mb:int = 1048576; // se o tamanho é menor ou igual à variável Limit if(fr.size <= (Limit * Mb)) { /* Envia arquivo e ID de sessao + Usuário ID de sessão só é necessário caso queira recuperar algum valor da sessão, pois o Firefox cria uma nova sessão nesta requisição, consequentemente sem os valores da sessão atual. Eu particularmente não consegui recuperar os valores da sessão mesmo alterando o session id por isso envio junto a variável User, mas em todo caso pelo que entendi nos tutoriais que li, é este o caminho. */ var Request:URLRequest = new URLRequest("uploadImagem.php? SESSION_ID="+sessionId+"&User="+User); Request.method = URLRequestMethod.POST; fr.upload(Request); } else { // Se o tamanho é maior que a variável Limit Alert.show("O arquivo possui "+ int(fr.size/Mb*100)/100 +"Mb e ultrapassa o limite de "+ Limit +"Mb."); // Executa a função que limpa os campos finish(); } } //-------------------------------------------------------------------------- // recebe o evento OPEN do fr //-------------------------------------------------------------------------- private function onOpen(e:Event):void { // não sei exatamente o porque do %3%%, mas sei que determina o modo de exibição do label da progress bar pb.label = "%3%%"; } //-------------------------------------------------------------------------- // recebe o evento PROGRESS do fr //-------------------------------------------------------------------------- private function onProgress(e:ProgressEvent):void { // preenche o campo fileField com o nome do arquivo selecionado fileField.text = fr.name; // mostra o progress bar pb.visible = true; // mostra o botão cancelar cancelBtn.visible = true; addEventListener(Event.CANCEL,onCancel); // mostra o progresso do upload no label do progress bar // utilizando a função setProgress pb.setProgress(e.bytesLoaded,e.bytesTotal); // mensagem do campo infoLoad var Loaded:Number = int(e.bytesLoaded/1048576*100)/100; var Total:Number = int(e.bytesTotal/1048576*100)/100; infoLoad.text="Foram enviados "+Loaded+"Mb de "+Total +"Mb"; if(e.bytesLoaded == e.bytesTotal){ infoLoad.text = "Salvando o arquivo..."; } } //-------------------------------------------------------------------------- // recebe o evento CANCEL do fr //-------------------------------------------------------------------------- private function onCancel(e:Event):void { infoLoad.text="Foi cancelado o envio do arquivo "+ fr.name; // limpa os campos finish(); } //-------------------------------------------------------------------------- // recebe o DataEvent do UPLOAD_COMPLETE_DATA do fr //-------------------------------------------------------------------------- private function onComplete(e:DataEvent):void { //-------------------------------------------------------------- // exibe a mensagem recebida do php no campo infoLoad infoLoad.text=e.data; //-------------------------------------------------------------- // limpa os campos finish(); } //-------------------------------------------------------------------------- // função que limpa campos e remove listener e botao ao término do Upload //-------------------------------------------------------------------------- private function finish():void { fileField.text = ''; pb.visible = false; cancelBtn.visible = false; removeEventListener(Event.CANCEL,onCancel); } ]]> </mx:Script> <mx:HBox width="100%" horizontalAlign="center" y="11" x="121" height="44" verticalAlign="middle"> <mx:Spacer width="90" /> <mx:TextInput id="fileField" enabled="false" editable="false" width="200"/> <mx:Button label="Procurar..." click="Browse()"/> <mx:LinkButton id="cancelBtn" label="Cancelar" click="Cancel()" width="90"/> </mx:HBox> <mx:HBox width="474" horizontalAlign="center" y="42"> <mx:ProgressBar id="pb" mode="manual" labelPlacement="center" width="95%" visible="false" /> </mx:HBox> <mx:Text x="0" y="65" width="100%" id="infoLoad" textAlign="center" text="Selecione uma imagem para enviar."/> </mx:VBox> -- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para flexdev@googlegroups.com Para sair da lista, envie um email em branco para flexdev-unsubscr...@googlegroups.com Mais opções estão disponíveis em http://groups.google.com/group/flexdev