Disponibilizar arquivo para download, como fazer?

6 respostas
M

Olá, tenho uma aplicação que acessa um repositorio cvs, baixa alguns códigos fonte e salva em uma pasta no servidor.

Não estou conseguindo fazer da minha aplicação um download desses arquivos.

ele baixa o jsp que está fazendo a requisição do download.

como posso resolver isso??

obrigado.

6 Respostas

L

Eu não consegui entender o seu problema…
Explique melhor a sua aplicação.

M

e Ae :slight_smile:

Você precisa mudar o content-type da response para content-type=“application/zip”

[]'s

M

Pessoal, consegui resolver ontem esse problema, mas só tive tempo de postar agora :stuck_out_tongue:

a quem interessar, segue a solução:

public static void geraDownload(HttpServletResponse response, String caminhoArquivo, String nomeArquivo){
		try {
			
			File arquivo = new File ( caminhoArquivo.endsWith("/") ? caminhoArquivo+nomeArquivo : caminhoArquivo+"/"+nomeArquivo);
			response.setContentType(DownloadUtil.getTipoConteudo(nomeArquivo));
			response.setHeader("Content-disposition", "attachment;filename="+ URLEncoder.encode(nomeArquivo, "utf-8"));
			
			InputStream in = new FileInputStream(arquivo);
			ServletOutputStream out = response.getOutputStream();

			byte[] buffer = new byte[(int)arquivo.length()];
			int nLidos;
			
			while((nLidos = in.read(buffer)) >= 0) {
				out.write(buffer, 0, nLidos);
			}
			out.flush();
			out.close();
    		in.close();

		}catch(IOException e) {
			e.printStackTrace();
		}
	}
G

Eu acho que vc poderia fazer isso através de html mesmo…em todo caso ficou boa a servlet

R

amigao… eu ia começar a implementar isso agora. Fiz uma tela de Upload de arquivos e agora ia tentar fazer com que os arquivos ficassem disponiveis para download.

abraços :smiley:

M

já que vc vai fazer um para download, usa esse método tb, ele gera alguns mymi types (acho q é assim que escreve)…

public static String getTipoConteudo(String arquivo){
		String arquivoTemp = arquivo.toLowerCase();
		String retorno = "";
		if(arquivoTemp.endsWith("txt") || arquivoTemp.endsWith("cbl"))
			retorno = "text/plain";
		else if(arquivoTemp.endsWith("gif"))
			retorno = "image/gif";
		else if(arquivoTemp.endsWith("doc"))
			retorno = "application/msword";
		else if(arquivoTemp.endsWith("xls"))
			retorno = "application/vnd.ms-excel";
		else if(arquivoTemp.endsWith("zip"))
			retorno = "application/zip";
		else if(arquivoTemp.endsWith("rar"))
			retorno = "application/rar";
		else if(arquivoTemp.endsWith("ppt"))
			retorno = "application/vnd.ms-powerpoint";
		else if(arquivoTemp.endsWith("xls"))
			retorno = "application/vnd.ms-excel";
		else if(arquivoTemp.endsWith("html") || arquivoTemp.endsWith("html"))
			retorno = "text/html";
		else if(arquivoTemp.endsWith("tif") || arquivoTemp.endsWith("tiff"))
			retorno = "image/tiff";
		else if(arquivoTemp.endsWith("xls"))
			retorno = "application/pdf";
		else
			retorno = "application/x-msdownload";
		
		return retorno;
	}

abraços 8)

Criado 5 de julho de 2007
Ultima resposta 6 de jul. de 2007
Respostas 6
Participantes 5