estou com um problema sério!
Fiz uma aplicação que tem o objetivo principal de fazer uploads e downloads de documentos.
Testei tudo em casa e até aí tudo blz… o problema foi quando eu implantei o sistema.
Acontece que quando o cliente clica para fazer o download do arquivo, este é gravado em um diretório no servidor e não na máquina do usuário.
Em casa eu não peguei esse erro porque estava tudo em uma máquina só. Meu problema é como fazer o download do arquivo, uma vez que esse arquivo está no banco de dados?
Conexaocnct=newConexao();try{cnct.conecta();PreparedStatementsql=cnct.conn.prepareStatement("SELECT arquivo,nome_arquivo FROM tbl_anexo where id_anexo="+request.getParameter("id_anexo"));ResultSetrs=sql.executeQuery();if(rs.next()){Blobblob=rs.getBlob(1);byte[]blobData=blob.getBytes(1,(int)blob.length());Stringnome=rs.getString(2).replaceAll(" ","_");Stringcaminho=(getServletContext().getRealPath("/anexos/")+nome);//Now you got your data in blobData... write to filejava.io.FileOutputStreamfileOut=newjava.io.FileOutputStream(caminho);fileOut.write(blobData);//System.out.println(caminho);// aqui deve ser configurado direito, baseado no tipo do arquivoresponse.setContentType("application/download");//response.setContentType("multipart/form-data"); // mude "attachment" para "inline" para mostrar direto no browserStringarq="attachment;filename="+nome;response.setHeader("Content-Disposition",arq);//response.setHeader( "Content-Disposition", "inline;filename="+nome+""); ServletOutputStreamos=response.getOutputStream();os.write(blobData);os.close();cnct.conn.close();java.io.Filefile=newjava.io.File(caminho);file.delete();}}finally{try{cnct.conn.close();}catch(Exceptione){e.printStackTrace();}}
D
danielqueiroz
Obrigado Marcelo
Já consegui resolver o problema. Foi exatamente da forma que vc descreveu, mas eu não criei um servlet pra isso. Mas já está funcionando