我需要帮助处理我正在开发的工具中的问题。
我需要下载一个外部文件并重命名,但不使用readfile(),file_get_contents()或fread()(文件太大,无法在服务器上读取它们并在访问者PC上再次下载)。
我先尝试过:
代码:
header("Location: http://www.example.com/example_download.zip");
它适用于下载,但不适用于example_download.zip重命名。
所以我尝试了readfile():
代码:
header("Content-Disposition: attachment; filename="example_download_2.zip"\n\n");
header("Content-Type: application/force-download");
readfile("http://www.example.com/example_download.zip");
exit;
使用上面的代码它运行良好,首先在服务器上下载远程文件,重命名它,然后用新名称发送给访问者,但是这个过程的资源使用率非常高,而且带宽使用率也很高
所以我正在寻找一种方法来生成外部文件的强制下载,动态重命名并使用新名称生成下载,但直接从源下载。我有可能吗?
提前致谢 此致
答案 0 :(得分:4)
HTML5现在允许您通过download
属性执行所需操作:
<a href="http://www.example.com/example_download.zip" download="custom_filename.zip">
Link
</a>
更多信息:
http://developers.whatwg.org/links.html#attr-hyperlink-download http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download
答案 1 :(得分:2)
你不可能这样做。如果你的php脚本将客户端重定向到某个url else,那么所有的HTTP头都留给新的url脚本来决定。你必须下载它才能重命名。