Bom dia Pessoal!
Não estou conseguindo abrir o arquivo que eu anexei na aplicação, o banco é sqlserver 2008, posso anexar .doc, pdf e xls, ppt. Ao tentar abrir o arquivo que anexei o eclipse (NEON 4.6.0) apresenta o erro abaixo:
08:45:50,765 ERROR [STDERR] java.io.FileNotFoundException: C:\meusistema\formulario\evento\Formulario_20170126141915_294.doc (O sistema não pode encontrar o caminho especificado)
08:45:50,766 ERROR [STDERR] at java.io.FileInputStream.open(Native Method)
08:45:50,766 ERROR [STDERR] at java.io.FileInputStream.<init>(Unknown Source)
08:45:50,766 ERROR [STDERR] at br.com.meusistema.empregado.presentation.AbrirArquivo.doGet(AbrirArquivo.java:49)
08:45:50,766 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
08:45:50,766 ERROR [STDERR] at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
08:45:50,766 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
08:45:50,766 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
08:45:50,766 ERROR [STDERR] at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
08:45:50,766 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
08:45:50,768 ERROR [STDERR] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
08:45:50,769 ERROR [STDERR] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
08:45:50,769 ERROR [STDERR] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
08:45:50,769 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
08:45:50,769 ERROR [STDERR] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
08:45:50,769 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
08:45:50,769 ERROR [STDERR] at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
08:45:50,769 ERROR [STDERR] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
08:45:50,769 ERROR [STDERR] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
08:45:50,769 ERROR [STDERR] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
08:45:50,769 ERROR [STDERR] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
08:45:50,769 ERROR [STDERR] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
08:45:50,769 ERROR [STDERR] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
08:45:50,769 ERROR [STDERR] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
08:45:50,769 ERROR [STDERR] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
08:45:50,769 ERROR [STDERR] at java.lang.Thread.run(Unknown Source)
08:45:50,770 ERROR [[AbrirArquivo]] Servlet.service() for servlet AbrirArquivo threw exception
java.lang.NullPointerException
at br.com.meusistema.empregado.presentation.AbrirArquivo.doGet(AbrirArquivo.java:76)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
O erro acontece ao entrar neste IF:
if(extencao.equals("doc") || extencao.equals("docx") ){
response.setContentType("application/msword");
}else if( extencao.equals("xls") || extencao.equals("xlsx") ){
response.setContentType("application/vnd.ms-excel");
}else if( extencao.equals("ppt") || extencao.equals("pptx") ){
response.setContentType("application/vnd.ms-powerpoint");
}else if( extencao.equals("pdf") ){
response.setContentType("application/pdf");
}
segue a classe inteira:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
String nomeArquivo = request.getParameter("arquivo");
String tipoDiretorio = request.getParameter("tipoDiretorio");
String caminhoDiretorio = null;
if(tipoDiretorio.equals("1")){
caminhoDiretorio = "C:/sispaev/formulario/evento/";
}else{
caminhoDiretorio = "C:/sispaev/formulario/empregado/";
}
String extencaoArquivoAUX[] = nomeArquivo.split("[.]");
String extencao = extencaoArquivoAUX[extencaoArquivoAUX.length - 1];
// Obtem o contexto
ServletContext context = getServletContext();
File arquivo = new File(caminhoDiretorio + nomeArquivo);
byte[] arquivoByte = null;
try {
FileInputStream fis = new FileInputStream(arquivo);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[8192];
int bytesRead = 0;
while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {
baos.write(buffer, 0, bytesRead);
}
arquivoByte = baos.toByteArray();
} catch (Exception e) {
e.printStackTrace();
}
if(extencao.equals("doc") || extencao.equals("docx") ){
response.setContentType("application/msword");
}else if( extencao.equals("xls") || extencao.equals("xlsx") ){
response.setContentType("application/vnd.ms-excel");
}else if( extencao.equals("ppt") || extencao.equals("pptx") ){
response.setContentType("application/vnd.ms-powerpoint");
}else if( extencao.equals("pdf") ){
response.setContentType("application/pdf");
}
response.setContentLength(arquivoByte.length);
response.addHeader("Content-Disposition", "attachment; filename=" + "\""+ nomeArquivo + "\"");
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(arquivoByte, 0, arquivoByte.length);
ouputStream.flush();
ouputStream.close();
}
Alguém pode me ajudar?