如何选择下载文件名,是否有办法更改它?

时间:2009-05-21 18:14:47

标签: pdf

我有一个不在我服务器上的文件的链接:

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

我想这样做,以便当访问者点击要下载的链接时,弹出PDF的名称将是NASA.pdf,而不是monograph15b.pdf。

这可能用任何语言吗?

4 个答案:

答案 0 :(得分:3)

如果您不打算自己托管文件,您可以读取文件内容,然后使用相应的标题将这些内容直接发送到浏览器。

请注意,这会很慢,因为每次PHP页面运行时,您都会从NASA重新下载文件。

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

这种方法还要求配置PHP,以便fopen()可以处理通过HTTP读取文件。

答案 1 :(得分:2)

真正做到这一点的唯一方法是首先将相关文件下载到您自己的服务器上,根据需要为其命名,然后将其提供给最终用户。

答案 2 :(得分:0)

查看HTTP标头Content-Disposition标头,它将允许您指定文件名。

答案 3 :(得分:0)

您需要使用ASP.NET之类的任何服务器端技术。你在哪里放入页面上的按钮。单击该按钮时,它将执行以下任务。

1。)Response.Clear();

2。)Response.AddHeader(“Content-Disposition”,“attachment; filename = Nasa.pdf”);

3。)Response.ContentType =“application / octet-stream”;

4。)Response.WriteFile(context.Server.MapPath(“history.nasa.gov/monograph15b.pdf”)); //您需要为应用程序设置实际正确的路径。