Pessoal,
Sigo na minha busca por uma solução para realizar uplod com java + flex.
Achei um exemplo de servlet porém porem o flex está retornando um erro:
Error #2044: IOErrorEvent: não manipulado. text=Error #2038: Erro do arquivo
de E/S.
at com.fozci.sicorc.views::TelaImportarRazao/init()[C:\Documents and
Settings\...\workspace\Sicorc\flex_src\com\...\sicorc\views\TelaImportarRazao.mxml:16]
at
com.fozci.sicorc.views::TelaImportarRazao/___TelaImportarRazao_Application1_creationComplete()[C:\Documents
and
Settings\...\workspace\Sicorc\flex_src\com\...\sicorc\views\TelaImportarRazao.mxml:7]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at
mx.core::UIComponent/dispatchEvent()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:12528]
at mx.core::UIComponent/set
initialized()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:1627]
at
mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:759]
at
mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1072]
Segue o Servlet e o mxml:
Servlet:
*
import* java.io.IOException;
*
import* java.util.Iterator;
*
import* java.util.List;
*
import* javax.servlet.ServletException;
*
import* javax.servlet.http.HttpServlet;
*
import* javax.servlet.http.HttpServletRequest;
*
import* javax.servlet.http.HttpServletResponse;
*
import* org.apache.commons.fileupload.FileItem;
*
import* org.apache.commons.fileupload.disk.DiskFileItemFactory;
*
import* org.apache.commons.fileupload.servlet.ServletFileUpload;
*
public* *class* FileUploadServlet *extends* HttpServlet{
*private* String uploadpatch = "/teste/";
*public* *static* *final* *int* *maxPostSize* = 100*1024*1024;
*
public* FileUploadServlet (){
*super*();
}
*protected* *void* processRequest(HttpServletRequest request,
HttpServletResponse response) *throws* Exception{
*try* {
response.setContentType("text/html;charset=UTF-8");
DiskFileItemFactory factory = *new* DiskFileItemFactory();
factory.setSizeThreshold(4096);
ServletFileUpload upload = *new* ServletFileUpload(factory);
upload.setFileSizeMax(*maxPostSize*);
List<FileItem> fileItens= upload.parseRequest(request);
Iterator<FileItem> iter = fileItens.iterator();
*while* (iter.hasNext()){
FileItem item = iter.next();
*if*(item.isFormField()){
item.write(*new* File(uploadpatch + item.getName()));
}
}
} *catch* (Exception e) {
*throw* e;
}
*protected* *void* doGet(HttpServletRequest request, HttpServletResponse
response)
*throws* ServletException, IOException{
*try* {
processRequest(request, response);
} *catch* (Exception e) {
e.printStackTrace();
}
}
*protected* *void* doPost(HttpServletRequest request, HttpServletResponse
response)
*throws* ServletException, IOException{
*try* {
processRequest(request, response);
} *catch* (Exception e) {
e.printStackTrace();
}
}
*public* *void* destroy(){
*super*.destroy();
}
}
}
Segue o mxml:
<?xml version="1.0" encoding="utf-8"?>
<!--
http://blog.flexexamples.com/2007/09/21/uploading-files-in-flex-using-the-filereference-class/-->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white"
creationComplete="init();">
<mx:Script>
<![CDATA[
*private* *var* fileRef:FileReference;
*var* request:URLRequest = *new* URLRequest (*"
http://localhost:8080/Sicorc/FileUploadServlet"*);
*private* *function* init():*void* {
fileRef = *new* FileReference();
fileRef.addEventListener(Event.SELECT, fileRef_select);
fileRef.addEventListener(ProgressEvent.PROGRESS, fileRef_progress);
fileRef.addEventListener(Event.COMPLETE, fileRef_complete);
}
*private* *function* browseAndUpload():*void* {
fileRef.browse();
message.text = *""*;
}
*private* *function* fileRef_select(evt:Event):*void* {
*try* {
message.text = *"size (bytes): "* + numberFormatter.format(fileRef.size);
fileRef.upload(request);
} *catch* (err:Error) {
message.text = *"ERROR: zero-byte file"*;
}
}
*private* *function* fileRef_progress(evt:ProgressEvent):*void* {
progressBar.visible = *true*;
}
*private* *function* fileRef_complete(evt:Event):*void* {
message.text += *" (complete)"*;
progressBar.visible = *false*;
}
]]>
</mx:Script>
<mx:NumberFormatter id="numberFormatter" />
<mx:Button label="Upload file"
click="browseAndUpload();" />
<mx:Label id="message" />
<mx:ProgressBar id="progressBar"
indeterminate="true"
visible="false" />
</mx:Application>
--
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