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.
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
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