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

Download de arquivo com Servlet e Flex

Colocado por Cognitiva Soluções na(s) categoria(s): 1, 4, 6, Access, AR, blog, Blogs, break, business, catch, class, código, Curso, Download, err, exemplo, finally, Flex, for, function, Google, html, ide, IE, if, image, int, Java, mg, O, on, override, print, produto, pt, RIA, Ria’s Geral, string, TAT, try, UI, vs em 04 26th, 2011 | Sem comentários

Segue um exemplo de como desenvolver um Servlet para download de arquivos realizando a integração com Flex.

Vamos ao Servlet:

package com.xxx.business.services;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.agriness.produto31.business.db.entities.Usuario;
import com.agriness.produto31.business.dto.Arquivo;
import com.agriness.produto31.commons.AccessProperties;
import com.agriness.produto31.core.exception.BusinessException;
import com.agriness.produto31.recurso310003.business.services.ArquivoDownload;

public class ServletDownloadFile extends HttpServlet {

 private static final long serialVersionUID = -1783732558472851554L;

 @Override
 @SuppressWarnings("unchecked")
 protected void service(final HttpServletRequest request,
   final HttpServletResponse response) throws ServletException,
   IOException {

  ArquivoDownload arqDown = new ArquivoDownload();
  Arquivo arq = new Arquivo();
  arq.setNome(request.getParameter("nome"));
  arq.setExtensao(request.getParameter("extensao"));
  arqDown.setArquivo(arq);
  arqDown.setCaminho("/download/");

  PrintWriter printwriter = response.getWriter();

  if (arqDown.getArquivo().getNome().length() == 0) {
   response.setContentType("text/html");
   printwriter.println("Nome do arquivo inválido");
   printwriter.flush();
   printwriter.close();
   return;
  }
  if (arqDown.getCaminho() == null) {
   response.setContentType("text/html");
   printwriter.println("Caminho do arquivo inválido");
   printwriter.flush();
   printwriter.close();
   return;
  }
  File file = new File(arqDown.getCaminho()
    + arqDown.getArquivo().getNome());
  if (file == null) {
   response.setContentType("text/html");
   printwriter.println("Arquivo não pode ser lido");
   printwriter.flush();
   printwriter.close();
   return;
  }

  if (!file.exists() || !file.canRead() || file.isDirectory()) {
   response.setContentType("text/html");

   if (!file.exists())
    printwriter.println("Arquivo inexistente");
   else if (file.isDirectory())
    printwriter.println("O arquivo é um diretório");
   else
    printwriter.println("Arquivo não pode ser lido");

   printwriter.flush();
   printwriter.close();
   return;
  }

  response.setHeader("Content-Disposition", "attachment; filename = "
    + arqDown.getArquivo().getNome());
  response.setContentType("octet-stream");

  int BUFF_SIZE = 1024;
  byte[] buffer = new byte[BUFF_SIZE];
  response.setContentLength((int) file.length());
  FileInputStream fis = new FileInputStream(file);
  OutputStream os = response.getOutputStream();

  int byteCount = 0;
  try {
   do {
    byteCount = fis.read(buffer);
    if (byteCount == -1)
     break;
    os.write(buffer, 0, byteCount);
    os.flush();
   } while (true);
  } catch (Exception excp) {
   excp.printStackTrace();
  } finally {
   os.close();
   fis.close();
  }

 }
}

Segue o código Flex:

public function executaDownloadFromUrl( url:String ):void{
   if( url == null ){
    return;
   }
   var u:URLRequest  = new URLRequest(url);
   navigateToURL(u);
  }

Monte a url conforme os atributos definidos no Servlet.
ex: http://meudominio.com/Servlet/?nome=nomeArquivo&extensao=.pdf



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:
» CogStores: E-Commerce / Loja Virtual
» Erro de segurança do FlashPlayer
» Carregando sub-aplicações de versões diferentes do Flex com SWFLoader

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