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

Pdf 下载文件名是如何选择的,是否有办法更改?,pdf,Pdf,我有一个指向不在服务器上的文件的链接: <a href="history.nasa.gov/monograph15b.pdf">NASA</a> 我想这样做,当访问者点击链接下载时,会弹出的PDF文件名称是NASA.PDF,而不是monograph15b.PDF 这在任何语言中都是可能的吗?真正做到这一点的唯一方法是首先将有问题的文件下载到您自己的服务器上,按您的意愿命名,然后将其备份给您的最终用户。查看HTTP头文件,它将允许您指定文件名。如果您不打算自己托管该文

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

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

我想这样做,当访问者点击链接下载时,会弹出的PDF文件名称是NASA.PDF,而不是monograph15b.PDF


这在任何语言中都是可能的吗?

真正做到这一点的唯一方法是首先将有问题的文件下载到您自己的服务器上,按您的意愿命名,然后将其备份给您的最终用户。

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

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

请注意,这会很慢,因为每次运行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,以便能够通过HTTP读取文件。

您需要使用任何服务器端技术,如ASP.NET。你在页面上的哪个位置放了一个按钮。单击按钮时,它将执行以下任务

1.)响应。清除()

2.)Response.AddHeader(“内容处置”、“附件;文件名=Nasa.pdf”)

3.)Response.ContentType=“应用程序/八位字节流”


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

你使用任何特定的语言吗?该页面是一个php文件,但我可以使用html、JVScript等。这是raj所指的远程文件可以使用的东西吗?不,你需要通过网站的某个部分进行下载,该部分可以在下载过程中更改HTTP头,或者是一个网页更改头,然后提供文件,或者你需要一个处理程序在下载过程中更改下载。我只是喜欢无缘无故地进行驱动器向下投票。如果你托管该文件,您可以在HTTP headerMatthias中将保存文件名指定为不同的名称:根据原始海报,很明显他不是自己托管文件,所以更改标题对他没有帮助,除了在他自己的下载过程中执行此操作而不是更改文件名。@matthias,是的,它在不同的服务器上谢谢,这绝对有效。你知道这样的事情在客户端是否可行吗?例如,如果服务器不能访问pdf,但用户可以访问?也许是用javascript?我不确定我懂了。你能再解释一下吗?例如,nasa有一些pdf文件,只有用户登录后才能访问。我假设脚本下载pdf,然后将其发送给用户。在这种情况下,脚本将无法访问pdf,因为它没有登录到NASA的服务器。谢谢你的帮助!嗯,我想不出一个好办法,谢谢!这似乎是一个类似于马克建议的算法