Recentemente, ao fazer o upload de arquivos com Flex tive este problema: IOError #2038. Pesquisando na internet, vi que este é um erro que muitas pessoas estão enfrentando, e volta e meia é bem complicado de se resolver. Vou postar aqui o motivo do meu problema e a solução encontrada.
Primeiro de tudo: o que é este maldito IOError 2038?
É um erro genérico disparado pelo Flex quando ele não consegue acessar o link para fazer o upload. Sim, genérico!!!! Isso significa que milhares de coisas podem ter acontecido.
O mais comum é que o link está errado ou, no caso de Java a classe de upload está lançando alguma exceção.
Para verificar, é bom criar um formulario HTML para fazer o mesmo procedimento e ver se dá tudo certo.
Não foi meu caso.
Para PHP, teve gente que resolveu alterando o arquivo .htaccess e até mesmo problemas com mod_security.
No meu caso, o upload é feito através de um servlet e o arquivo não é salvo em disco. Pior: funcionava no Internet Explorer. Nos outros browsers não.
Atrávés de uma exaustiva pesquisa, descobri um problema com a classe FileReference no Flash Player do Firefox/Chrome. Ela não envia os dados para autenticação HTTPS/SSL para o servidor na requisição. Sendo assim, se o link está protegido por JAAS ou algum outro serviço de autenticação, irá falhar e o erro irá acontecer.
Possíveis soluções: desproteger o link de upload ou enviar o jsessionid na requisição do Flex.
No meu caso, preferi enviar o jsessionid na requisição:
var request:URLRequest = new URLRequest("_seu_link_de_upload" + ";jsessionid=" + jsessionid_da_sessao );
Neste caso, o problema foi resolvido.
Espero ter ajudado.
Abraço!
Dae Hallan, sou o Mawcor irmao do Lucjedi rsrsrs, Nao sabia que tu tava usando o flex tbm. Show de bola, depois de estudar e desenvolver um sisteminha em Ruby on Rails to começando a estudar agora o Java + Flex com o BlazeDS e to gostando do que to vendo, a interface fica bem bacana e o back-end fica confiável. Ruby on Rails vai ficar para minhas opções de necessidades pequenas e rápidas(rápidas eu digo é de desenvolvimento, pq de performance deixa a desejar se falarmos de grande fluxo de dados, estudos comprovados do meu TCC que foi a comparação de Java com o Ruby heehhehe). Abraço cara.