PHP实现远程文件下载到本地

参考代码,注意设置header头部分。配合readfile函数。

readfile — 输出文件

说明 ¶
readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] ) : int
读取文件并写入到输出缓冲。

参数 ¶
filename
要读取的文件名。

use_include_path
想要在 include_path 中搜索文件,可使用这个可选的第二个参数,设为 TRUE。

context
Stream 上下文(context) resource。

返回值 ¶
返回从文件中读入的字节数。如果出错返回 FALSE 并且除非是以 @readfile() 形式调用,否则会显示错误信息。

$url = "http://www.xxx.com/1.jpg?t=123";
$info = get_headers($url, true);
$size = $info['Content-Length'];
header("Content-type:application/octet-stream");
//去掉`?`后面的查询参数
$filename = $url;
if (false !== stripos($url, '?')) {
     $filename = substr($url, 0, stripos($url, '?'));
}
$origin_name = basename($filename);
header("Content-Disposition:attachment;filename = " . $origin_name);
header("Accept-ranges:bytes");
header("Accept-length:" . $size);
readfile($url);
exit;

你可能感兴趣的:(PHP实现远程文件下载到本地)