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”]
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?
[quote=marciofermino]Silvano vc conseguiu??
Estou com o mesmo problema;.;
Preciso realizar um upload em uma aplcacao Java Flex BlazeDS + Tom CAT[/quote]
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
[quote=marciofermino]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?[/quote]
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.