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 [email protected]
Para sair da lista, envie um email em branco para
[email protected]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev