Já tive isso no ano retrasado :) Isso é uma questao de segurança do FP, vc precisa enviar o sessionId junto com o cabeçalho de requisição:
http://thanksmister.com/index.php/archive/firefox-flex-urlrequest-and-sessions-issue/ http://www.visible-form.com/blog/flash-file-upload-and-session-cookies/ http://flexblog.edchipman.ca/the-tale-of-the-lost-session-filereferenceupload boa sorte. Em 7 de julho de 2010 17:34, Rudinei Alves <[email protected]>escreveu: > Alguém já passou por este problema ou tem alguma solução ? > > > > > On 5 jul, 00:18, Rudinei Alves <[email protected]> wrote: > > Estou fazendo um aplicativo de envio de arquivos onde depois de logado > > o usuario fica na sessao e é gravado junto ao arquivo no DB. Para > > outras funcionalidades com HTTPService consigo acessar esta variável > > ($_SESSION['user']) porém no arquivo de upload com o FileReference o > > user aparece null. Nota: isso só ocorre no Firefox, no IE funciona > > normal (...!!!). Como é um problema no backend não há nada relacionado > > na documentação. Também andei pesquisando (inclusive aqui) e encontrei > > alguns tópicos que não me deram (ou não entendi) a solução. Conto com > > o auxílio de vocês pois é realmente necessário que se grave o usuário > > junto ao arquivo. > > > > CODIGO FONTE FLEX > > > > <?xml version="1.0" encoding="utf-8"?> > > <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" > > layout="absolute" width="566" > > creationComplete="init()" title="Enviar Arquivo"> > > > > <mx:Script> > > <![CDATA[ > > import mx.rpc.events.ResultEvent; > > import mx.controls.Alert; > > > > //FUNÇOES DE UPLOAD > > > > private var fr:FileReference; > > > > private function init():void > > { > > > > fr = new FileReference; > > cancelBtn.visible = false; > > fr.addEventListener(Event.SELECT,onSelect); > > fr.addEventListener(Event.OPEN,onOpen); > > > > fr.addEventListener(ProgressEvent.PROGRESS,onProgress); > > fr.addEventListener(Event.COMPLETE,onComplete); > > > > } > > > > private function Browse():void > > { > > infoLoad.text = ""; > > > > var tipos:FileFilter = new FileFilter("Arquivos > > Permitidos" > > ,"*.jpg; *.jpeg; *.gif; *.png; *.zip; *.rar; *.cdr; > > *.psd; *.fla; *.ai; *.doc; *.txt; *.xls; *.pdf; *.mp3; *.wma; *.mpeg; > > *.avi;"); > > var tiposArq:Array = new Array(tipos); > > fr.browse(tiposArq); > > } > > > > private function Cancel():void > > { > > fr.cancel(); > > dispatchEvent(new Event(Event.CANCEL)); > > } > > > > private function onSelect(e:Event):void > > { > > > > var Limit:int = 150; // Mb > > var Mb:int = 1048576; > > > > if(fr.size <= (Limit * Mb)) > > { > > > > //Envia arquivo e variáveis > > var Request:URLRequest = new URLRequest("ftpUpload.php"); > > var Vars:URLVariables = new URLVariables(); > > > > //Vars.cod = Cod; > > Vars.user = User; > > Request.data = Vars; > > Request.method = URLRequestMethod.POST; > > fr.upload(Request); > > > > fileField.text = fr.name; > > pb.visible = true; > > cancelBtn.visible = true; > > addEventListener(Event.CANCEL,onCancel); > > } > > else > > { > > Alert.show("O arquivo possui "+ int(fr.size/Mb*100)/100 > > +"Mb e ultrapassa o limite de "+ Limit +"Mb."); > > fileField.text = ""; > > cancelBtn.visible = false; > > > > } > > } > > > > private function onOpen(e:Event):void > > { > > pb.label = "%3%%"; > > } > > > > private function onProgress(e:ProgressEvent):void > > { > > pb.setProgress(e.bytesLoaded,e.bytesTotal); > > > > 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..."; > > } > > } > > > > private function onCancel(e:Event):void > > { > > infoLoad.text="Foi cancelado o envio do arquivo "+ > > fr.name; > > finish(); > > > > } > > > > private function onComplete(e:Event):void > > { > > infoLoad.text="O arquivo "+ fr.name +" foi enviado com > > sucesso."; > > dispatchEvent(new Event('refresh')); > > finish(); > > } > > > > // Limpa campos e remove listener e botao ao término ou > > cancelamento do Upload > > private function finish():void > > { > > fileField.text = ''; > > pb.visible = false; > > cancelBtn.visible = false; > > removeEventListener(Event.CANCEL,onCancel); > > } > > > > ]]> > > </mx:Script> > > > > <mx:Canvas width="100%" height="99" > > > <mx:HBox width="323" horizontalAlign="center" y="11" x="121"> > > <mx:TextInput id="fileField" enabled="false" editable="false" > > width="200"/> > > <mx:Button label="Procurar..." click="Browse()"/> > > </mx:HBox> > > <mx:Button id="cancelBtn" label="Cancelar" click="Cancel()" > > width="90" x="444" y="11"/> > > <mx:HBox width="100%" 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"/> > > </mx:Canvas> > > > > </mx:TitleWindow> > > > > BACKEND PHP > > > > <? > > session_start(); > > $user = $_SESSION['user']; > > > > $dir = $user; > > > > set_time_limit(0); > > > > $file =@ $_FILES["Filedata"]; > > > > $size = $file["size"]; > > > > if($size > 0){ > > > > if(!is_dir($dir)){ > > mkdir($dir,0755); > > } > > > > $cod = date("ymdHis"); > > $data_hora=date("d/m/y H:i"); > > > > $fileName =utf8_decode($file["name"]); > > > > include("libs/t_text.php"); > > > > function autoRename($user,$name){ > > > > $extensao = substr($name,strrpos($name,".")+1); > > > > $name=substr(ereg_replace('.'.$extensao,'',$name),0,70); > > > > $newName=t_text($name).'.'.$extensao; > > > > $n=0; > > while($i==0){ > > if(file_exists($user.'/'.$newName)){ > > $n++; > > $newName=t_text($name).'['.$n.'].'.$extensao; > > $i=0; > > }else{ > > $i=1; > > } > > } > > > > return $newName; > > } > > > > $fileName =autoRename($user,$fileName); > > > > $ftp_server="ftp.nwdnet.com.br"; > > $ftp_user_name="xxxxxxxxxxx"; > > $ftp_user_pass="xxxxxxxxxxxx"; > > > > $temp_file=$file["tmp_name"]; > > > > $destination_file= "www/$user/$fileName"; > > > > $conn_id = ftp_connect("$ftp_server"); > > $ftp_login=ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); > if(! > > $ftp_login){echo "Falha na conexão !"; exit;} > > $passive = ftp_pasv ($conn_id , true ); > > @ $Copy = ftp_put($conn_id, $destination_file,$temp_file, > > FTP_BINARY); > > ftp_close($conn_id); > > > > if($Copy){ > > > > // GRAVA NO BANCO DE DADOS > > > > include("conexao.php"); > > > > $insert="INSERT INTO `arquivos_ftp` (`cod`, `data_hora`, `user`, > > `url`) VALUES ('$cod', '$data_hora', '$user', '$fileName')"; > > $result=mysql_query($insert); > > > > echo "Arquivo enviado com sucesso !"; > > > > //mysql_close($conn); > > } > > > > } > > > > ?> > > -- > 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 > -- Mario Junior http://blog.mariojunior.com/ @mariojunior -- 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
