这篇文章主要介绍了php隐藏实际地址的文件下载方法,涉及php中header与file_get_contents方法的相关使用技巧,非常具有实用价值,需要的朋友可以参考下
本文实例讲述了php隐藏实际地址的文件下载方法。分享给大家供大家参考。具体如下:
下面这段php代码可不透露实际的文件下载地址。
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($filepath));
header('Content-Transfer-Encoding: binary');
header('Expires: 0′);
header('Cache-Control: must-revalidate, post-check=0, pre-check=0′);
header('Pragma: public');
header('Content-Length: ' . filesize($filepath));
readfile($file_path);代码确实能下载文件,但是,当文件过大的时候,就会出现意想不到的错误:
下载的文件莫名变小
下载的文件网络错误
以下为大文件正常下载代码:
<?php
$down_file = "1.txt";//文件的真实地址(支持url,不过不建议用url)
$file_info = pathinfo($down_file); //获取文件的名称,后缀等信息
$filesize=filesize($down_file)+1000;
header('Content-Description:File Transfer');
header("Content-Type:application/octet-stream");
header('Content-Transfer-Encoding:binary');
header("Accept-Ranges: bytes");
header('Expires:0');
header('Cache-Control:must-revalidate');
header('Pragma:public');
header("Content-Length:".$filesize);
header("Content-Disposition:attachment;filename=".$file_info['basename']);
$fp = fopen($down_file, "rb");
fseek($fp,0);
while (!feof($fp)) {
set_time_limit(0);
print (fread($fp, 1024 * 8));
flush();
ob_flush();
}
fclose($fp);
exit ();
?>本文为dsg112社区原创文章,转载无需和我联系,但请注明来自dsg112社区. www.dsg112.com
