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.
tem que ter o Acrobat Reader atualizado, caso não tenha, ele vai fazer download…
L
lsjunior
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.
cpinheiro
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,
L
lsjunior
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
cpinheiro
Valeu lsjunior !!!
a solução era justamente essa, muito obrigado mesmo cara.