Alguem já conseguiu fazer Upload de arquivo usando Java + Adobe Flex tentei fazer esse exemplo abaixo mais sempre da o seguinte erro:
IO Error: [IOErrorEvent type=“ioError” bubbles=false cancelable=false eventPhase=2 text=“Error #2038”]
[Flex+Java] Upload de Arquivo. Erro #2038 IO Error
21 Respostas
Silvano,
Você debugou o Java pra ver se tá dando algum erro nele?
[]s
Estava com um problema parecido que corrigi aplicando o método POST ao invés do GET para o lado FLEX.
Exemplo:
public function enviar():void
{
if (this.fileRef == null) return;
var request:URLRequest = new URLRequest("http://localhost:8080/Projeto/swf/upload.jsp");
request.method = URLRequestMethod.POST;
try
{
fileRef.upload(request);
}
catch (error:Error)
{
txtPathFile.text = "Unable to upload file.";
}
}
Silvano,
Tem um usando o BlazeDS q acho bem fácil. http://imasters.uol.com.br/artigo/13619/flash/realizando_download_e_upload_de_arquivos_com_blazeds/
[]s
Eu fiz umas mudanças ao configuraçãos,
JAVA
Sim, você está fazendo com Windows
em web.xml você tem que mudar o diretório (UploadDirectory)
UploadDirectory
C:/Users/javaph/Desktop/Guj/FileUpload/exec/
Eu mude tambem em web.xml
esta mudança assim que eu gosto “action.do”
<servlet-mapping>
<servlet-name>UploadHandler</servlet-name>
<url-pattern>/uploadhandler.do</url-pattern>
</servlet-mapping>
depois
para testar do servlet Eu adiciono um método
public class UploadHandler extends HttpServlet {
…
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException {
try {
response.getWriter().println(“Listo”);
} catch (IOException e) {
throw new ServletException(e);
}
}
…
}
NOTA : você exige “commons-fileupload-1.2.1.jar” em "WEB-INF/lib"
http://mirror.nyi.net/apache/commons/fileupload/binaries/commons-fileupload-1.2.1-bin.zip
http://localhost:9334/FileUpload/uploadhandler.do?test
quando eu obter “Listo” no browser estou listo pra Flex
FLEX
AGORA
É mais fácil se você tive FlexBuilder
no diretório "assets"
no arquivo “properties.xml”
Eu mudar para a nova URL
UploadHandler
http://localhost:9334/FileUpload/uploadhandler.do
E Tudo funciona!!!
Silvano vc conseguiu??
Estou com o mesmo problema;.;
Preciso realizar um upload em uma aplcacao Java Flex BlazeDS + Tom CAT
Em Qual OS ta trabalhando?
Silvano vc conseguiu??Estou com o mesmo problema;.;
Preciso realizar um upload em uma aplcacao Java Flex BlazeDS + Tom CAT
o tomcat remoto esta no Windows Server 2003
primeiro você precisa de permisos pra escrever
depois, eu fiz isso fazendo os cambios no web.xml e outros arquivos
slds
falei com o adm da rede ele me disse que deu as permissoes
e quanto ao web xml vc tem um exemplo
nao sei seria possivel ou pedir demais
vc poderia falar por skype ou msn?
nao pude adicionar-lhe, eu somente mudei o exemplo
falei com o adm da rede ele me disse que deu as permissoes
e quanto ao web xml vc tem um exemplo
nao sei seria possivel ou pedir demais
vc poderia falar por skype ou msn?
No começo o meu estava dando esse erro também porém, agora está funcionando de boa, no meu web.xml estava mapeando duas Servlet a MessageBrokerServlet(que o flex utiliza) e a minha FileUpload, ai estava ocorrendo um conflito já que minha MessageBrokerServlet tinha uma tag display-name eu removi apenas essa tag e ficou beleza. Tente ai talvéz seja isso também, qualquer coisa avisa aí!
A forma mais fácil de fazer uploads sem sofrer é fazer o upload pelo flash player e serializar um objeto com o conteudo do arquivo em um ByteArray… Quando chegar no java, basta escrever o arquivo que veio serializado no objeto 
Uso o exemplo desse link para fazer upload
http://blog.digows.com/upload-de-arquivos-com-flex-php-e-java/
Qual seria essa outra forma? tem um exemplo?
Bom, vou partir do exemplo que você tem um botão “Procurar” efetuou o clique nele:
Método para controle do click no botão de selecionar arquivos
protected function btnSelecionarImportacaoClickHandler(event:MouseEvent) : void
{
this.fileReference = new FileReference();
this.fileReference.browse();
this.fileReference.addEventListener(Event.SELECT, selectHandler);
this.fileReference.addEventListener(Event.COMPLETE, completeHandler);
this.fileReference.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
}
Carrega o arquivo na memoria
protected function selectHandler(event:Event) : void
{
this.fileReference.load();
}
Evento de controle quando o player finaliza a leitura do arquivo para ser submetido ao servidor
protected function completeHandler(event:Event) : void
{
this.fileUploadVO = new FileUploadVO();
this.fileUploadVO.file = new ByteArray();
(event.currentTarget as FileReference).data.readBytes(this.fileUploadVO.file, 0, (event.currentTarget as FileReference).data.length);
}
Evento de controle quando ocorre uma violação ao arquivo que será enviado para leitura
protected function ioErrorHandler(event:IOErrorEvent) : void
{
}
Objeto que será enviado para o Java
package seu.pacote.flex.FileUploadVO
{
import flash.utils.ByteArray;
[Bindable]
[RemoteClass(alias="seu.pacote.java.FileUploadVO")]
public class FileUploadVO
{
public function FileUploadVO()
{
}
public var file:ByteArray;
}
}
Ai basta você enviar esse objeto para o java, como um RemoteObject normalmente, ao chegar lá… java básico, pegar o arquivo e escrever no servidor, ou guardar a informação no banco de dados
Legal, esse exemplo usa servlet?? ou é só isso ai já funciona?
Não usa servlet, apenas RemoteObject 
ok mais vc tem exemplo:?
Foi o que eu passei … A parte de RemoteObject é como você faz qualquer comunicação entre Flex e Java
#2038… errinho safado esse ai.
Melhor usar a solução proposta pelo companheiro de usar RemoteObject. Fazer upload para um servlet pode dar incompatilibilidade até com o proxy no Linux + Firefox.
Até hoje temos problema em uma aplicação aqui por conta disso.
ehhehe
Realmente, esqueci de comentar sobre possíveis problemas com proxy, o que no RemoteObject não acontece, uma vez conectado no BlazeDS, WebORB, GraniteDS ou LiveCycle, vai funcionar com certeza.
Abraços
Meu caro boa tarde.
De vários exemplos que vi na net, esse foi bem mais fácil de se encaixar no que eu queria (apesar que ainda sou iniciante em programação).
Mas gostaria de uma ajuda com algumas coisas um tanto quanto bobas.
nos métodos carregaArquivo (que é o meu responsável por fazer essa chamativa), e nos selectHandler e completeHandler, estão todos com o erro:
E no método completeHandler, além do erro acima, esses:
Multiple markers at this line:
-1120: Access of undefined property event.
-1120: Access of undefined property event.
-1119: Access of possibly undefined property fileUploadVO through a reference with static type
Esses métodos browse() e load(), eu preciso criá-los ou definir de alguma forma??
Aguardo.
Obrigado.
Bom, vou partir do exemplo que você tem um botão “Procurar” efetuou o clique nele:Método para controle do click no botão de selecionar arquivos
protected function btnSelecionarImportacaoClickHandler(event:MouseEvent) : void { this.fileReference = new FileReference(); this.fileReference.browse(); this.fileReference.addEventListener(Event.SELECT, selectHandler); this.fileReference.addEventListener(Event.COMPLETE, completeHandler); this.fileReference.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); }Carrega o arquivo na memoria
protected function selectHandler(event:Event) : void { this.fileReference.load(); }Evento de controle quando o player finaliza a leitura do arquivo para ser submetido ao servidor
protected function completeHandler(event:Event) : void { this.fileUploadVO = new FileUploadVO(); this.fileUploadVO.file = new ByteArray(); (event.currentTarget as FileReference).data.readBytes(this.fileUploadVO.file, 0, (event.currentTarget as FileReference).data.length); }Evento de controle quando ocorre uma violação ao arquivo que será enviado para leitura
protected function ioErrorHandler(event:IOErrorEvent) : void { }Objeto que será enviado para o Java
package seu.pacote.flex.FileUploadVO { import flash.utils.ByteArray; [Bindable] [RemoteClass(alias="seu.pacote.java.FileUploadVO")] public class FileUploadVO { public function FileUploadVO() { } public var file:ByteArray; } }Ai basta você enviar esse objeto para o java, como um RemoteObject normalmente, ao chegar lá… java básico, pegar o arquivo e escrever no servidor, ou guardar a informação no banco de dados