参考代码,注意设置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;