Download de arquivo no danco de dados com jsp

Pessoal, me ajudem por favor

Preciso criar um link para download de um arquivo que foi inserido direto no mysql.
Fiz a inserção desses arquivo na aplicação desktop, mas em jsp, não sei como fazer o download.
O tipo de dados que utilizei foi longblob.

Seria fazer upload do arquivo do banco e depois criar um link pra download?

Não, o arquivo será inserido somente pela aplicação desktop, mas se você puder me mostrar com faço upload também agradeço.
Mas a princípio é somente o download

Obrigado. Meu tcc está dependendo disso.

Ah, me desculpa, entendi sua pergunta. É isso mesmo, pego o arquivo que está no banco de dados como uma array de bytes e fazer o download através de um link.

Como vc ja tem o arquivo em um array de bytes basta vc cria um comandLink e criar um evento para quando o usuario clicar nesse commandLink(que terá o nome do arquivo por exemplo) vc pegar esse array de bytes e passar para um servlet abrir o arquivo para download. No meu exemplo eu to passando o caminho do arquivo para fazer o dl, mas vc pode usar o array de bytes, nunca tentei mas deve funcionar.

Aqui eu redireciono para um servlet abrir o arquivo, então vc precisa criar um servlet.

[code]HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); // pego o response

	try {					
		// Pegando o contentType
		String contentType = anexo.getContentType();
		if(contentType.contains("doc") || contentType.contains("docx")){
			contentType = "application/msword";
		} 		
		String caminhoArquivo = anexo.getCaminhoArquivo();// pegando o caminho do arquivo para fazer o dl
		response.sendRedirect("/RFE_WEB/AbreArquivoDownload?Anexo="+URLEncoder.encode(caminhoArquivo,"ISO-8859-1") +"&Type="+contentType +"&FileName="+URLEncoder.encode(anexo.getNomeArquivo(),"ISO-8859-1")); // Redirecionando para o servlet fazer o dl		
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}[/code]	

No método doGet() do servlet vc abre o arquivo para dl

[code]/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub

	request.setCharacterEncoding("ISO-8859-1");  
	
	String type = request.getParameter("Type");
			
	String fileName = URLDecoder.decode(request.getParameter("FileName"), "ISO-8859-1");	
	
	String caminhoDoArquivo = URLDecoder.decode(request.getParameter("Anexo"),"ISO-8859-1");		
				
	File anexo = new File(caminhoDoArquivo);
	
	byte[] arquivo = new Arquivo().fileToByteArray(anexo);
	
	response.setContentType(type);
	
	response.setContentLength(arquivo.length);
    
    response.setHeader("Content-Disposition","attachment;filename=" +fileName);   
	
	ServletOutputStream servletOutputStream = response.getOutputStream();		
	
	servletOutputStream.write(arquivo);
	
	servletOutputStream.flush();
	
    servletOutputStream.close();	    
}

[/code]

Valeu Everton,

vou tentar, depois vou postar o resultado.

ok, qualquer coisa fala ai :smiley:

Ok, como eu mostaria esse commandLink?