¿Cómo se elige el nombre del archivo de descarga y hay una manera de cambiarlo?

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

  •  23-08-2019
  •  | 
  •  

Pregunta

Tengo un enlace a un archivo no en mi servidor:

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

Me gustaría hacerlo de modo que cuando un usuario hace clic en el enlace para descargar, el nombre que pop-up para el PDF sería NASA.pdf, y no monograph15b.pdf.

¿Es esto posible en cualquier idioma?

¿Fue útil?

Solución

Si no se va a alojar el archivo usted mismo, puede ser capaz de leer en el contenido del archivo y luego enviar los contenidos directamente en el navegador con las cabeceras apropiadas.

Tenga en cuenta que esto va a ser lenta debido a que va a volver a descargar el archivo de la NASA cada vez que su página se ejecuta PHP.

<?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");
?>

Este enfoque también requiere que se configura PHP para que fopen () puede manejar la lectura de un archivo a través de HTTP.

Otros consejos

La única manera de hacerlo realidad es que descargar primero el archivo en cuestión en su propio servidor, el nombre como desee, y luego servir una copia de seguridad a sus usuarios finales.

Mira en la cabecera HTTP cabecera Content-Disposición , que le permitirá especificar el nombre de archivo.

Es necesario utilizar cualquier tecnología del lado del servidor como ASP.NET. ¿En qué lugar se pone en un botón en la página. Cuando se hace clic en el botón que llevará a cabo las siguientes tareas.

1) Response.Clear ();.

.

2) Response.AddHeader ( "Content-Disposition", "unión; nombre de archivo = Nasa.pdf");

.

3) Response.ContentType = "application / octet-stream";

4) Response.WriteFile (context.Server.MapPath ( "history.nasa.gov/monograph15b.pdf")).; // lo que necesita para establecer la ruta realtively correcto para su aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top