Com o código abaixo:
ServletContext servletContext = (ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();
String pdf = servletContext.getRealPath("/pdfs");
Desktop desktop = Desktop.getDesktop();
File file = new File (pdf);
desktop.open(file);
Eu consigo, de dentro do eclipse (ou seja, em meu localhost), abrir o arquivo pdf.
O problema é, quando o site está no ar, ao invés do arquivo ser aberto na máquina cliente, ele abre no servidor!!!!
Na máquina cliente, usando IE, ao acionar o link para baixar o arquivo (abrir via Acrobat), nada acontece. Então corro até o servidor e lá está o Acrobat aberto, visualizando o arquivo. Que estranho...
O mais estranho é ainda o código abaixo:
String webFile ="http://localhost:8080/minhaAplicacao/meuArquivo.pdf";
try {
URL url = new URL(webFile);
InputStream in = url.openStream();
File file = new File("D:\\","teste.pdf");
FileOutputStream os = new FileOutputStream(file);
byte[] buf = new byte[1024];
int len;
while( (len = in.read(buf)) > 0 ){
for(int i = 0; i < len; i++){
os.write(buf[i]);
}
}
os.flush();
os.close();
in.close();
}catch (MalformedURLException e){
System.out.println(e);
}catch (IOException e){
System.out.println(e);
}finally{
System.out.println("tudo ok");
}
Este código deveria fazer o download do SERVIDOR para a minha máquina, para o meu diretório "D". No entanto ele faz o "download" para ele mesmo, ou seja, para o diretório D do servidor.
Já quebrei muito a cabeça com este código, que deveria dar certo, mas não consigo achar o erro.
Alguém me ajuda?