Salve galera,
tenho uma aplicação struts 1.x que precisa abrir PDF que está no num diretório do servidor, mas quando a página é chamada recebo esse erro do navegador:
O firefox nao sabe como abrir esse endereço…
o protocolo c nao está associado a nenhum aplicativo.
Estou chamando meu iframe assim:
<iframe src="${frm.prontuarioPath}" width="100%" frameborder="0" name="rel" id="iFrameRelatorioId" style="margin-top:2px;height:600px;"></iframe>
A variável prontuarioPath traria algo como C:\Prontuario\pecrfe_97.pdf
Acredito que o problema está na forma como esse caminho da variável prontuarioPath é montado, alguém sabe qual a forma correta?
acredito que seja na forma de download…:
http://seuServidorWeb/algumaPasta/seuArquivo.pdf
tem que ter o Acrobat Reader atualizado, caso não tenha, ele vai fazer download…
Vc deve ter um servlet que leia o arquivo do servidor e devolva para o cliente.
Por exemplo, se sua aplicação roda no servidor com nome serv1 e é acessada assim: http://serv1:8080/apliacacao, e seu iframe aponta para C:\Temp\arquivo.pdf, por exemplo, não será aberto, mesmo que no cliente exista o arquivo no local informado.
O melhor seria vc fazer um servlet para baixar o documento e passar para o cliente um caminho assim: http://serv1:8080/apliacacao/download?arquivo=arquivo.pdf.
Valeu pelas respostas!!!
mas ainda não ficou totalmente claro para mim como o servlet deve ser implementado, alguém sabe onde eu posso encontrar um exemplo?
abs,
Fazer um mais ou menos aqui.
public class DownloadServlet extends HttpServlet {
protected void doGet(HttpServletRequesr request, HttpServletResponse response) {
File file = new File("O CAMINHO DO ARQUIVO, FIXO OU POR PARAMETRO");
// Verifica se o arquivo existe, se por ser lido, etc
...
FileInputStream inputStream = new FileInputStream(file);
byte [] bytes = IOutils.toByteArray(inputStream); // Commons IO
response.setContentType("application/pdf"); // Colocar dinamico, pelo arquivo
response.setContentLenght(bytes.lenght);
response.setHeader("Content-Disposition", "inline; filename=\"arquivo.pdf\""); // Colocar dinamico
response.getOutputStream().write(bytes);
}
}
Aí é só mapear no web.xml e chamar para fazer o download do arquivo no lado do servidor
Valeu lsjunior !!!
a solução era justamente essa, muito obrigado mesmo cara.
abs,