Mas muitas vezes, a transmissão do arquivo é executada por um serviço que o desenvolvedor está implementando. Isto acontece muito quando o documento é gerado dinâmicamente pelo servidor a cada requisição. Por exemplo, um serviço que gere um boleto para pagar uma conta. Provavelmente o boleto não está gravado no HD do servidor, mas é criado a cada requisição.
Neste caso, muitas vezes quando queremos salvar o arquivo gerado no HD local, o nome sugerido para o arquivo pelo navegador é o nome do link clicado. Por exemplo: eu clico em www.meuservidor.com/geraboleto.do, peço para salvar o arquivo e o navegador propõe o nome geraboleto.do. Isto pode ser indesejável caso o arquivo deva ter um nome específico.
Para resolver este problema, basta adicionar o header Content-Disposition com valor
“inline; filename=nomedomeuarquivo”
no cabeçalho da resposta antes de enviar o arquivo propriamente dito. A forma de definir o header depende de cada linguagem. Em Java, desenvolvendo com Servlets, o comando seria
response.setHeader(“Content-Disposition”, “inline; filename=teste.doc”);