题
我有一个链接到一个文件不是我的服务器上:
<a href="history.nasa.gov/monograph15b.pdf">NASA</a>
我想就这样,当访问者点击下载链接,会弹出该PDF会NASA.pdf,并且名称不上monograph15b.pdf。
在任何语言这是可能的?
解决方案
如果您不打算自己托管文件,您可以在文件的内容读出,然后直接发送这些内容到浏览器相应的头。
请注意,这将是缓慢的,因为你会从NASA每次重新下载该文件的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");
?>
此方法还要求PHP被配置为使得 fopen()函数一>可以处理读取文件通过HTTP。
其他提示
要真正做到这一点的唯一方法是先有问题的文件下载到自己的服务器,如你所愿的名字,然后服务于它备份到您的最终用户。
看到HTTP报头内容处置头,它可以让你指定的文件名。
您需要使用任何服务器端技术,如ASP.NET。凡在你把页面上的按钮。当点击了按钮,其将执行以下任务。
1)Response.Clear();
。2)Response.AddHeader( “内容处置”, “附件;文件名= Nasa.pdf”);
3)Response.ContentType = “应用/八位字节流”;
4)Response.WriteFile(context.Server.MapPath( “history.nasa.gov/monograph15b.pdf”))。 //你需要设置realtively正确的路径为您的应用程序。
不隶属于 StackOverflow