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

Responder a