强制从外部服务器下载并重命名

Ak *_*Hil 5 php rename download

我需要帮助解决我正在开发的工具中的问题.

我需要下载一个外部文件并重命名,但不使用readfile(),file_get_contents()或fread()(文件太大,无法在服务器上读取它们并在访问者PC上再次下载).

我先尝试过:

码:

header("Location: http://www.example.com/example_download.zip");
Run Code Online (Sandbox Code Playgroud)

它适用于下载,但不适用于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;
Run Code Online (Sandbox Code Playgroud)

使用上面的代码,它运行良好,首先在服务器上下载远程文件,重命名它,然后用新名称发送给访问者,但此过程的资源使用率非常高,以及带宽使用情况.

因此,我正在寻找一种方法来生成外部文件的强制下载,动态重命名并使用新名称生成下载,但直接从源下载.这是可能的?

在此先感谢您的问候

Mau*_*uro 5

HTML5 现在允许你通过download属性做你想做的事:

<a href="http://www.example.com/example_download.zip" download="custom_filename.zip">
    Link
</a>
Run Code Online (Sandbox Code Playgroud)

更多信息:

http://developers.whatwg.org/links.html#attr-hyperlink-download http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download


ada*_*ith 2

你这是不可能做到的。如果您的 php 脚本将客户端重定向到其他某个 url,则所有 HTTP 标头都将留给新的 url 脚本来决定。您必须下载它才能重命名。