Como é o nome do arquivo de download escolhido e se existe uma maneira de mudar isso?

StackOverflow https://stackoverflow.com/questions/894298

  •  23-08-2019
  •  | 
  •  

Pergunta

Eu tenho um link para um arquivo não no meu servidor:

<a href="history.nasa.gov/monograph15b.pdf">NASA</a>

Gostaria de fazê-lo de modo que quando um visitante clica no link para download, o nome que iria aparecer para o PDF seria NASA.pdf, e não monograph15b.pdf.

Isso é possível em qualquer idioma?

Foi útil?

Solução

Se você não está indo para hospedar o arquivo, você pode ser capaz de ler no conteúdo do arquivo e, em seguida, enviar esses conteúdos diretamente para o navegador com os cabeçalhos apropriados.

Note que esta será lenta porque você vai ser re-download do arquivo da NASA cada vez que sua página PHP é executado.

<?php
$filename = "http://history.nasa.gov/monograph15b.pdf";
$outputfilename = "NASA.pdf";

header("Content-Type:  application/pdf");
header("Content-Disposition:  attachment; filename=\"" . basename($outputfilename) . "\";" );
header("Content-Transfer-Encoding:  binary");
readfile("$filename");
?>

Esta abordagem também exige que o PHP ser configurado de modo que fopen () pode lidar com a leitura de um arquivo via HTTP.

Outras dicas

A única maneira de realmente fazer isso é primeiro fazer o download do arquivo em questão para o seu próprio servidor, nomeá-lo como quiser, e depois servir-lo de volta para seus usuários finais.

Olhe para o cabeçalho HTTP Content-Disposition cabeçalho, ele irá permitir que você especifique o nome do arquivo.

Você precisa usar qualquer tecnologia do lado do servidor, como ASP.NET. Onde em você colocar em um botão na página. Quando o botão é clicado ele irá executar as seguintes tarefas.

1) Response.Clear ();.

2) Response.AddHeader ( "Content-Disposition",. "Anexo; nome do ficheiro = Nasa.pdf");

3) Response.ContentType = "aplicação / octeto de fluxo";.

4) Response.WriteFile (context.Server.MapPath ( "history.nasa.gov/monograph15b.pdf").); // você precisa definir o caminho realtively correto para sua aplicação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top