logo
  • Home
  • Acerca
  • Autores
  • Faq
  • Rede
  Twitter   Feed-me! RSS!

Upload de arquivo com Servlet e Flex – Parte I

Colocado por Cognitiva Soluções na(s) categoria(s): 1, 4, 6, Access, apache, AR, arte, blog, Blogs, boolean, browser, busca, business, case, catch, chrome, class, código, exemplo, firefox, Flex, for, function, Google, IE, if, image, int, Java, mg, Number, O, on, print, problema, pt, reference, RIA, Ria’s Geral, servidor, string, Sun, try, UI, utils, vs em 05 6th, 2011 | Sem comentários

Segue um exemplo de como desenvolver um Servlet para upload de arquivos realizando a integração com Flex. Confira a solução adotada para resolver o problema de perda de sessão do upload com Flex nos browsers Firefox e Chrome.


Segue o código java:

package com.xxx.business.services;

import java.io.File;
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.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import sun.misc.BASE64Decoder;

import com.xxx.commons.AccessProperties;
import com.xxx.core.exception.BusinessException;

public class ServletUploadFile extends HttpServlet {

 public ServletUploadFile() {
 }

 protected void doGet(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {

  doPost(request, response);
 }

 protected void doPost(HttpServletRequest request,
   HttpServletResponse response) throws ServletException, IOException {
  try {
   // Verifica se é upload
   boolean isMultipart = ServletFileUpload.isMultipartContent(request);

   if (isMultipart) {
    FileItemFactory factory = new DiskFileItemFactory();

    ServletFileUpload upload = new ServletFileUpload(factory);

    List items = upload.parseRequest(request);

    Iterator iter = items.iterator();
    while (iter.hasNext()) {
     FileItem item = (FileItem) iter.next();

     if (item.isFormField()) {
      processFormField(item);
     } else {
      processUploadedFile(item, "arquivos");
     }
    }
   }

  } catch (Exception e) {
   e.printStackTrace();
   throw (new ServletException(e.getMessage()));
  }
 }

 private void processFormField(FileItem item) throws ServletException {
  String name = item.getFieldName();
  String value = item.getString();

  System.out.println("Item name: " + name + " ; value: " + value);
 }

 private void processUploadedFile(FileItem item, String caminho)
   throws Exception {
  String fileName = item.getName();

  AccessProperties prop = new AccessProperties();
  String path = prop.getCaminhoPadrao() + caminho + "/upload/";

  // Verifica a existencia da pasta e se não existir ja cria
  if (FileUtils.verificaSeExisteECriaPasta(path)) {
   File uploadedFile = new File(path + fileName);
   if (!uploadedFile.exists()) {
    uploadedFile.createNewFile();
   }
   item.write(uploadedFile);

  } else {
   throw (new BusinessException(
     "Não foi possível criar uma pasta no servidor para o arquivo do upload."));
  }
 }

}

Agora vamos ao Flex:

Note que passamos o atributo?jsessionid que é utilizado para a sessão não ser perdida.

public function executaUploadFTP( file:FileReference ):void{
   var mile:Number = new Date().getUTCMilliseconds();

   var params:URLVariables = new URLVariables();
   params.jsessionid = this.sessionId;
   params.cod = mile;

   var servletTarget:URLRequest = new URLRequest("/ServletUploadFile;jsessionid=" +
    this.sessionId + "?cod=" + mile);

   servletTarget.method = URLRequestMethod.POST;
   servletTarget.data = params;
   file.upload(servletTarget, "Filedata", true);

  }

Na ?Parte II será abordado como recuperar o?jsessionid?e a construção da Tela Flex com seus métodos de busca do arquivo a ser enviado entre outro detalhes.



Veja o post original no blog do autor aqui!  

Cognitiva Soluções

Escrito por Cognitiva Soluções @ http://blog.cognitivasolucoes.com
Saiba mais sobre o autor na sua pagina de perfil
Outros posts do autor:
» Download de arquivo com Servlet e Flex
» Setando BackgroundColor em componentes Spark
» Controlando quando é criado o componente filho adicionado por State

Deixe um comentário



Spam Protection by WP-SpamFree

ACERCA

O que é o RedeRIA ?

O redeRIA não é nada mais que um agregador de feed's que disponibiliza o conteudo de varios blogs e autores ao redor do mundo RIA, actualmente agregamos mais de 2791 entradas vindas de 53 blogs especializados em ria’s, pelo que só fica a ganhar em assinar o feed ou seguir a comunidade no twitter.

Se acha que o seu blog ou um blog de um amigo é interessante e util para os leitores o redeRIA, faça a sua submissão aqui.

Feed: assine já
Twitter: siga-nos

GOOGLE

Votação


Deveria o RedeRia agregar conteúdo em inglês?
Ver Resultados

AUTORES


Eduardo KrausAlexandre TadashiBindableCognitiva SoluçõesDaniel LopesDaniel SchmitzDanielPedrinhaDClick TeamEbercomEdgard DavidsonElvis FernandesErko BrideeFabiel PrestesFábio Batista da SilvaFabio da SilvaFabriccio BernardesFelipe BorellaFlavia MoreiraGabriel VersalliniGabriela T. PerryIgor MusardoJanderson CardosoJoão AugustoJose Carlos FielKelps SousaLeonardo FrançaLucas MarçalLuis MessiasLuiz TarabalMario JuniorMário SantosMauro MartinsPablo SouzaPedro ClaudioreneRia BrazilriaPTRicardo CerqueiraRobson FernandesRodrigo Pereira FragaSaintBrSamuelFacchinelloSergio SouzaSilva DeveloperStefan HorochovecTech CaffeTecinforThiago BuenoVedVinícius SandimWillian ManoXAML Cast

PUBLICIDADE








Powered by Wordpress & msdevstudio.com