參考代碼,注意設置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;