Só nao esqueça de dar um fileReferenceInstance.clear() depois no Complete...
senao vc vai ficar com o kb (ou mb) do arquivo carregado na memória do flash
player desnecessariamente.

Também, vale ressaltar para não usar esse método de leitura para arquivos
grandes (dificil mensurar exatamente a partir de qnts mbs, por isso
recomendamos usar o back-end pra isso) mas tipo.. arquivos com vários megas
de tamanho podem dar problemas com isso pois o FileReference não faz um
stream do arquivo (só o Adobe AIR pela classe FileStream)... mas acredito q
se for para arquivos de retorno bancario (coisa de uns 1024kb, talvez 2mb
por dia) dá pra usar sim.

O Erko Bridee postou uma idéia de simular um stream usando o frameRate do
flash player para carregar dados em massa de arquivos grandes (beeeem
maiores q 2mb), deve estar nos históricos da lista (ou aqui ou na
Flex-Brasil) ou, ainda, no blog dele.


[]'s




Em 15 de dezembro de 2010 16:53, Clayton <[email protected]>escreveu:

> Se quer mesmo fazer no flex...
> Vai um exemplo com o sdk 3.5 e flashplayer 10.0 ou superior(flashplayer
> anterior a este não dá suporte para alguns métodos e atributos do
> Filereference):
>
>       private var arquivo : FileReference;
>
>       private function onImportar():void {
>                 arquivo = new FileReference();
>                 arquivo.addEventListener(IOErrorEvent.IO_ERROR,
> onUploadError, false, 0, true);
>                 arquivo.addEventListener(Event.SELECT, onSelectArquivo,
> false, 0, true);
>                 arquivo.addEventListener(ProgressEvent.PROGRESS,
> onUploadProgress, false, 0, true);
>                 arquivo.addEventListener(Event.COMPLETE, onUploadComplete,
> false, 0, true);
>
>                 try {
>                    arquivo.browse([new FileFilter("Arquivo texto",
> "*.txt;*.text")]);
>                 }
>                 catch (error:Error) {
>                     Alert.show("Não foi possível abrir uma janela para
> selecionar o arquivo." + " Verifique se o seu navegador web aceita este
> recurso.");
>                 }
>             }
>
>             public function onUploadError(event:IOErrorEvent):void {
>                 PopUpManager.removePopUp(progressBarWindow);
>                Alert.show("Ocorreu um erro ao fazer o upload do arquivo: "
> + event.toString());
>             }
>
>             private function onSelectArquivo(event:Event):void {
>                 if (arquivo != null) {
>                     progressBarWindow =
> ProgressBarWindow(PopUpManager.createPopUp(this, ProgressBarWindow, true));
>                     progressBarWindow.progressBar.indeterminate = false;
>                     progressBarWindow.progressBar.mode = "manual";
>                     progressBarWindow.progressBar.maximum = arquivo.size;
>                     arquivo.load();
>                 }
>                 else {
>                    Alert.show("Selecione um arquivo");
>                 }
>             }
>
>             private function onUploadProgress(event:ProgressEvent):void {
>
> progressBarWindow.progressBar.setProgress(event.bytesLoaded,
> event.bytesTotal);
>             }
>
>             private function onUploadComplete(event:Event):void {
>                 /* Pega a referencia do FileReference */
>                 arquivo = event.currentTarget as FileReference;
>
>                 /* Variavel para armazenar o ByteArray */
>                 //var data:ByteArray = new ByteArray();
>
>                 /*A partir daqui tenho todo o texto no array "linhas", onde
> cada linha do texto é uma posição no array*//
>                 var linhas:Array =
> arquivo.data.readMultiByte(arquivo.data.bytesAvailable,
> "iso-8859-1").split("\n");
>                 .
>                 .
>                 .
>                 .
>
>             }
>
> Em 15 de dezembro de 2010 17:41, Guilherme Ventura de Souza <
> [email protected]> escreveu:
>
>   É recomendável e compensa muito mais fazer tudo via back end como já
>> disseram, é um processo razoávelmente simples, então não será difícil
>> pesquisar e aprender a fazer no back end mesmo, além do mais acredito que
>> via back end também fique bem mais rápido a aplicação.
>>
>>  *From:* Helio Antonio Francisco Silva <[email protected]>
>> *Sent:* Wednesday, December 15, 2010 3:36 PM
>> *To:* [email protected]
>> *Subject:* Re: [flexdev] Re: Arquivos no Flex
>>
>> Minha linguagem de back end digamos que e muito tosca...  por isso eu
>> queria pegar o arquivo txt no flex extrair os dados e depois jogar via
>> webservice toda a extrutura por que assim euainda poderia paginar caso fosse
>> superior a 10.000 registros..
>>
>> 2010/12/15 Mário Júnior <[email protected]>
>>
>>> Pq via webservice??? Faz um upload normal mesmo..... daí seu back-end vai
>>> receber o arquivo, le-lo, dar as baixas dos boletos no banco de dados (de
>>> acordo com o arquivo) e mandar para o flex o resultado (x boletos pagos,
>>> $$$$ recebidos, etc).
>>>
>>> Já fiz assim.. nao é complicado.
>>>
>>>
>>> []'s
>>>
>>>
>>>
>>>
>>> Em 15 de dezembro de 2010 16:25, Helio Antonio Francisco Silva <
>>> [email protected]> escreveu:
>>>
>>>  Humm entao eu pegaria no flex e enviaria via Webservice o arquivo TXT ?
>>>> sera que a webservice do flex envia Arquivo TXT ?
>>>>
>>>> 2010/12/15 Rodrigo da Rosa Elesbão <[email protected]>
>>>>
>>>> Você poderia solicitar o arquivo via httpRequest,  mas assim como o
>>>>> Leonardo falou seria muito melhor parsear esse txt no servidor e enviar
>>>>> mastigado pro flex.
>>>>> --
>>>>> Att,
>>>>> Rodrigo da Rosa Elesbão <slipknabos(at)gmail.com>
>>>>> Twitter: @relesbao <http://twitter.com/relesbao>
>>>>>
>>>>> --
>>>>> 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
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>>  *Hélio Antonio Fransico Silva*
>>>> Desenvolvedor web
>>>> Certificado Flash developer
>>>> Certificado Flash Design
>>>> Certificado web developer
>>>> Consultor Microsiga / Totvs
>>>> Desenvolvedor ADVPL / ASP
>>>> Analista de sistemas e ERP Sênior.
>>>>
>>>> --
>>>>  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
>>>
>>
>>
>>
>> --
>> *Hélio Antonio Fransico Silva*
>> Desenvolvedor web
>> Certificado Flash developer
>> Certificado Flash Design
>> Certificado web developer
>> Consultor Microsiga / Totvs
>> Desenvolvedor ADVPL / ASP
>> Analista de sistemas e ERP Sênior.
>>
>> --
>> 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
>>
>> --
>> 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
>>
>
>
>
> --
> Clayton Marques Pereira
>
>  --
> 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